13.7 Swift关于便利构造方法“重写”的讨论

前端之家收集整理的这篇文章主要介绍了13.7 Swift关于便利构造方法“重写”的讨论前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

/**@H_301_5@

13.7-关于便利构造方法重写的讨论.mp4@H_301_5@

重写成一个便利构造方法@H_301_5@

@H_301_5@

Swift语言中便利构造方法不能重写。因为它是横向的@H_301_5@

*/@H_301_5@

@H_301_5@

@H_301_5@

class Human {@H_301_5@

let name: String@H_301_5@

var age: Int@H_301_5@

init(name: String,age: Int) {@H_301_5@

self.name = name@H_301_5@

self.age = age@H_301_5@

}@H_301_5@

@H_301_5@

convenience init() {@H_301_5@

self.init(name: "",age: 0)@H_301_5@

}@H_301_5@

@H_301_5@

}@H_301_5@

@H_301_5@

class Woman: Human {@H_301_5@

var haveBaby: Bool = false@H_301_5@

@H_301_5@

// 派生类中定义一个构造方法,它跟父类中的某个指定构造方法一样@H_301_5@

// override init(name: String,age: Int) {@H_301_5@

// haveBaby = false@H_301_5@

// super.init(name: name,age: age)@H_301_5@

// }@H_301_5@

@H_301_5@

init(name: String,age: Int,haveBaby: Bool) {@H_301_5@

self.haveBaby = haveBaby@H_301_5@

super.init(name: name,age: age)@H_301_5@

}@H_301_5@

@H_301_5@

// 派生类中用便利构造方法重写父类中的指定构造方法@H_301_5@

// convenience override init(name: String,0)"> // self.init(name: name,age: age,haveBaby: false)@H_301_5@

// }@H_301_5@

@H_301_5@

// 派生类中用便利构造方法重写父类中的便利构造方法@H_301_5@

// Initializer does not override a designated initializer from its superclass,Swift语言便利构造方法中不存在重写@H_301_5@

// convenience override init() {@H_301_5@

// self.init(name: "",age: 0,0)"> // }@H_301_5@

@H_301_5@

// 这个是当前类中的便利构造方法@H_301_5@

convenience init() {@H_301_5@

self.init(name: "",age: 0,haveBaby: false)@H_301_5@

}@H_301_5@


@H_301_5@

}@H_301_5@

@H_301_5@

@H_301_5@

var w0 = Woman.init(name: "d",haveBaby: true)@H_301_5@

@H_301_5@

var w1 = Woman.init()@H_301_5@

猜你在找的Swift相关文章