构造器重载
一、构造器重载概念
函数重载概念也适用于构造器,条件如下:
1、函数有相同的名字‘
2、参数列表不同或返回值类型不同;
构造器满足以下2个条件:
classRectangle{varwidth:Doublevarheight:Doubleinit(width:Double,height:Double){self.width=widthself.height=height}init(Wwidth:Double,Hheight:Double){self.width=widthself.height=height}init(length:Double){self.width=lengthself.height=length}init(){width=10.0height=20.0}}
二、值类型构造器类型
为了减少多个构造器间的代码重复,在定义构造器时,可以通过调用其它的构造器来完成实例的构造部分,这个过程称为构造器代理。构造器代理在值类型和引用类型中使用不同,
structRectangle{varwidth:Doublevarheight:Doubleinit(width:Double,height:Double){self.width=widthself.height=height}init(Wwidth:Double,Hheight:Double){self.init(width:width,height:height)}init(length:Double){self.init(width:length,height:length)}init(){self.init(width:60,height:80)}}
三、引用类型构造器横向代理
引用类型构造器代理是类构造器代理,由于类有继承关系,类构造器代理比较复杂,分为横向代理和向上代理
1、横向代理类型类似于值类型构造器代理,发生在同一类内部,这种构造器称为便利构造器;
2、向上代理发生在继承情况下,在子类型构造过程中要先调用父类构造器,初始化父类的存储属性,这种构造器称为指定构造器。
classRectangle{varwidth:Doublevarheight:Doubleinit(width:Double,height:Double){self.width=widthself.height=height}init(Wwidth:Double,Hheight:Double){self.width=widthself.height=height}convenienceinit(length:Double){self.init(W:length,H:length)}convenienceinit(){self.init(length:10.0)self.height=20.0}}
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。