美文网首页小经验小TipiOS-swift
十五、Swift3.0之构造函数(本类和子类)和重载构造函数

十五、Swift3.0之构造函数(本类和子类)和重载构造函数

作者: ZhengYaWei | 来源:发表于2017-02-26 16:25 被阅读151次

本类必选属性的构造函数。

/*
必选属性的构造过程:
1、给自己的属性分配空间并设置初始值
2、调用父类的构造函数,给父类的属性分配空间并设置初始值
以上这两个顺序和OC相比是完全相反的,OC中是先调用父类的方法,然后给自己的属性分配空间并设置初始值。
var name: String
//override表示重写
override init() {
    name = "zhang"
    super.init()
}
*/
class Person: NSObject {
   var name: String
   //override表示重写
   override init() {
       name = "zhang"
       super.init()
       
   }
}

子类的必选属性的构造过程。


/*
 子类的必选属性的构造过程,注意Student是Person的子类,所以可以直接使用Person类中的name属性,但是和自身类的属性初始化不一样,设置name属性的值,要放在super.init()之后。
 */
class Student: Person {
    var no: String
    override init() {
        //这是本类的属性
        no = "001"
        super.init()
        //这是父类的属性
         name = "li"
    }
}

构造函数总结:
1、非Optional属性都必须在构造函数中设置初始值。从而保证对象在被实例化的时候,属性都被正确的初始化。
2、必须在调用父类构造函数之前,必须保证本类的属性都已经完成初始化。即属性设置初始值,必须在调用super.init()之前。

重载构造函数。

class Person: NSObject {   
    //重载:和重写相比,函数名相同,但是参数个数不同  如:override init() 和init(name: String)
    //重载的好处:重载可以给自己的属性从外部设置初始值
    //思考:OC中是否有重载?
    //答:没有,initWith***
    init(name: String) {
        print("person init 重载")
        //为了区分不同的name,这里要使用self. 否则xcode无法识别
        self.name = name
        super.init()
    }
}

相关文章

  • 十五、Swift3.0之构造函数(本类和子类)和重载构造函数

    本类必选属性的构造函数。 子类的必选属性的构造过程。 构造函数总结:1、非Optional属性都必须在构造函数中设...

  • 02Dart:并不支持构造函数的重载

    Java 代码中,使用了重载构造函数的方法,该方法在 Java 中很普遍,重载的构造函数和之前的构造函数具有相同的...

  • java05(构造函数重载与构造代码块)

    构造函数的重载: 构造函数的命名就是类名 java构造函数可以重载很多次。构造方法重载具体好处就是:扔进来...

  • Boolan(博览网)——C++面向对象高级编程(下)(第五周作

    1. 构造函数和析构函数的调用过程 创建子类时,先调用父类的构造函数,再调用子类的构造函数。(构造由内而外) 销毁...

  • 继承

    1. 构造函数继承 重点:用.call()和.apply()将父类构造函数引入子类函数(在子类函数中做了父类函数的...

  • 深入理解javascript的5种继承方式

    1.构造函数式 我们发现,构造函数方式就是假借call和apply方法,把父类的构造函数嫁接到子类身上,子类new...

  • Java基础篇

    父类子类构造函数 子类的构造函数会隐式调用父类的无参构造函数,子类若想调用父类的构造函数需在子类的构造函数的第一行...

  • Kotlin继承与多态 (1)继承

    调用父类构造函数使用主构造函数使用此构造函数重载使用参数默认值调用构造函数重写成员属性和函数重写成员属性重写成员函...

  • JS实现继承的方式

    假设有如下父类 1. 构造函数继承 重点:用.call()和.apply()将父类构造函数引入子类函数(在子类函数...

  • 9.11 学习总结

    今天学了构造函数和析构函数,重载构造函数。 构造函数的作用是在对象被创建时使用特定的值构造对象,或者说将对象初始化...

网友评论

    本文标题:十五、Swift3.0之构造函数(本类和子类)和重载构造函数

    本文链接:https://www.haomeiwen.com/subject/yenowttx.html