构造器继承-创新互联

       在构造器中可以使用构造代理器来完成部分构造工作,类构造器代理分为横向代理和向上代理,横向代理只能发生在同一类内部,这种构造器称为便利构造器,向上代理发生在继承的情况下,在子类构造过程中,要先调用父类构造器初始化父类的存储属性,这种构造器称为指定构造器

为武侯等地区用户提供了全套网页设计制作服务,及武侯网站建设行业解决方案。主营业务为成都网站建设、做网站、武侯网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!

       一、构造器调用规则

       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://scyanting.com/article/pgdhh.html