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

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

/**

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

重写成一个便利构造方法

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

*/

class Human {

let name: String

var age: Int

init(name: String,age: Int) {

self.name = name

self.age = age

}

convenience init() {

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

}

}

class Woman: Human {

var haveBaby: Bool = false

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

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

// haveBaby = false

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

// }

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

self.haveBaby = haveBaby

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

}

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

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

// }

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

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

// convenience override init() {

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

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

convenience init() {

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

}


}

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

var w1 = Woman.init()

猜你在找的Swift相关文章