在构造器中可以使用构造代理器来完成部分构造工作,类构造器代理分为横向代理和向上代理,横向代理只能发生在同一类内部,这种构造器称为便利构造器,向上代理发生在继承的情况下,在子类构造过程中,要先调用父类构造器初始化父类的存储属性,这种构造器称为指定构造器
为武侯等地区用户提供了全套网页设计制作服务,及武侯网站建设行业解决方案。主营业务为成都网站建设、做网站、武侯网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!一、构造器调用规则
1、指定的构造器必须调用其直接父类的指定构造器;
2、便利构造器必须调用其同一类中的其他构造器;
3、便利构造器必须最终调用一个指定构造器结束;
class person { var name:String var age : Int func description()->String { return "\(name):\(age)" } convenienece init(){ self.init(name:"HEHE") self.age=10 } convenience init(name:String){ self.init(name:name,age:10) } init(name:String,age:Int){ self.name=name self.age=age }
class Studetn:Person { var school:String init(name:String,age:Int,school:String){ self.school=school super.init(name:name,age:age) } convenienece override init(name:String,age:Int){ self.init(name:name,age:age,school:"XXXX") } }
二、构造过程安全检查
1、首先分配内存,初始化子类存储属性,沿构造器链向上初始化父类存储属性,到达构造器链顶部,初始化全部的存储属性;
2、从顶部构造链往下,可以对类进行进一步的修改存储属性,调用实例方法等处理;
Swift的编译器在构造过程中可以运行一些安全检查工作,这些工作可以有效的防止属性在初始化前被访问,也可以防止属性被其它的一些构造器赋予不同的值;
安全检查1:指定构造器必须保证其所在类的所有存储属性都初始化完成,之后才能向上调用父类构造器代理;
安全检查2:指定构造器必须先调用父类构造器代理,再为继承的属性赋予新值,否则指定构造器赋予的新值都会被父类中的构造器所覆盖;
安全检查3:便利构造器必须先调用同一类中的其他构造器代理,然后再为任意属性赋新值,否则便利构造器赋予的值将被同一类中的其他指定构造器所覆盖;
安全检查4:构造器在第一阶段构造完成之前,不能调用实例方法,也不能读取实例属性;
三、构造器继承
Swift中子类构造器的来源有2种,自己编写和从父类继承,并不是所有父类的构造器都能自动继承下来,能够从父类自动继承下来的构造器,规则如下:
1、如果子类没有定义任何指定构造器,它将自动继承父类的所有指定构造器;
2、如果子类提供了所有父类指定构造器的实现,无论是通过条件1继承而来,还是自己编写,它将自动继承所有父类的便利构造器;
class Graduate:Studetn {
var special:String = ""
}
创新互联www.cdcxhl.cn,专业提供香港、美国云服务器,动态BGP最优骨干路由自动选择,持续稳定高效的网络助力业务部署。公司持有工信部办法的idc、isp许可证, 机房独有T级流量清洗系统配攻击溯源,准确进行流量调度,确保服务器高可用性。佳节活动现已开启,新人活动云服务器买多久送多久。
新闻名称:构造器继承-创新互联
文章网址:http://scgulin.cn/article/pgdhh.html