美文网首页
Swift便利构造函数convenience

Swift便利构造函数convenience

作者: Howeix | 来源:发表于2019-02-27 09:55 被阅读0次

    便利构造函数: 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
    

    相关文章

      网友评论

          本文标题:Swift便利构造函数convenience

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