Swift便利构造函数convenience

便利构造函数: convenience

便利构造函数是对构造函数的一种功能扩充, 可以在初始化之前,根据指定的条件完成相关的初始化工作.

class AClass {
    let numA: Int
    init(num: Int) {
        numA = num
    }

    //便利构造
    //注意点:
    //便利构造函数必须调用当前类的构造函数完成初始化
    //便利构造函数不能被子类重写或者是从子类中以super的方式被调用
    convenience init(num: Int, str: String) {     
        if num > 100{
            self.init(num: 100)
        }else{
            self.init(num: num)
        }
    }
}

class BClass: AClass {
    let numB: Int
    override init(num: Int) {
        numB = num + 1
        super.init(num: num)
//        super.init(num: xxx, str: xxx)  // 子类中实现中不可调用便利构造
    }
}

let a = AClass(num: 333, str: "这是便利构造方法~")
a.numA
//print:100

//子类可以调用便利构造:
//另外要注意, 如果使用子类要能调用到父类便利构造方法, 必须重写父类除了便利构造函数的所有构造函数, 是由于在便利构造函数中会调用当前的构造函数, 如果子类没有重写, 也无法完成初始化.
let b = BClass(num: 88, str: "这也是便利构造方法")
b.numA
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容