微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

13.2 Swift派生类的构造方法

/**

13.2-派生类的构造方法.mp4

*/

class AB {

var a: Int

var b: Int

// 指定构造方法,不允许出现构造器代理,self.init(...)

init(a: Int,b: Int) {

self.a = a

self.b = b

print("Class AB init!")

}

// 便利构造方法 一定是通过调用其它的构造方法来实现初始化 self.init

convenience init(a: Int) {

// self.a = a

// b = 0

self.init(a: a,b: 0)

}

convenience init(b: Int) {

// self.init(a: 2,b: 0)

self.init(a: 8)

}

}

class CD: AB {

var c: Int

var d: Int

// 指定构造器 Designated

// 构造方法认不会被继承,基类的存储属性只能通过基类的构造方法来初始化

init(c: Int,d: Int) {

// 派生类的引入的存储属性要先被初始化,然后在调用父类的构造方法父类属性进行初始化

self.c = c

self.d = d

// 基类的存储属性

super.init(a: 0,b: 0)

// 只能调用基类的指定(Designated)构造方法来对基类的属性进行初始化,不能调用便利(Convenience)构造方法

// super.init(b: 0)

}

convenience init(a: Int,b: Int,c: Int,d:Int) {

self.init(c: c,d: d)

}

}

原文地址:https://www.jb51.cc/swift/322376.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐