Swift-便利构造函数和指定构造函数继承关系
来源:互联网 发布:淘宝店铺banner尺寸 编辑:程序博客网 时间:2024/05/22 03:52
这里先给出两个类,一个是Person类,一个是Student类
import Foundationclass Person{ var name:String var weight:Double var height:Double //构造函数 init(name:String) { self.name = name weight = 0.0 height = 0.0 } //指定构造函数 init(name:String,weight:Double) { self.name = name self.weight = weight height = 1.0 } //便利构造函数 convenience init(name:String,weight:Double,height:Double) { self.init(name: name) self.weight = weight self.height = height } }
下面是Student类,如果我们什么方法都不去实现的话,那么默认是继承父类的所有的指定构造方法和便利构造函数
import UIKitclass Student: Person { }如下图所示
如果我们在Student类中重写了父类的方法,还是说自定义了构造方法,都是不会去继承父类的构造方法了
例如我们重写了init(name:String)方法
class Student: Person { override init(name: String) { super.init(name: "sss") height = 10 weight = 11 }}我们在创建这个类的对象的时候如下图所示
而当我们重写了Person类中所有的指定构造方法的时候,那么就会继承父类的所有的便利构造函数
override init(name: String) { super.init(name: "sss") height = 10 weight = 11 } override init(name: String, weight: Double) { super.init(name: "ssssaa", weight: 16) height = 110 }如下图所示
在这里需要注意的便利构造方法不能够去重写,如下图所示
还有一点是如果一个子类中任意的构造器和父类的便利构造器一模一样, 不算重写了父类的方法, 创建对象的时候只会显示子类定义的便利构造器,就比如说我们的Student类中的方法是这些,相当于多了个父类一模一样的便利构造函数。
import UIKitclass Student: Person { override init(name: String) { super.init(name: "sss") height = 10 weight = 11 } override init(name: String, weight: Double) { super.init(name: "ssssaa", weight: 16) height = 110 } convenience init(name:String,weight:Double,height:Double) { self.init(name: name) self.weight = weight self.height = height } }产生的效果如下图所示
还有就是我们在Student类中写了这么个方法,尽管和父类中的便利构造方法中的参数名字都相同,但是也不算重写
init(name:String,weight:Double,height:Double) { super.init(name: name) self.weight = weight self.height = height }
总结如下
1.也就是说如果我们子类没有实现任何的构造方法,那么就会默认的继承父类中的所有的构造方法
2.如果我们的子类重写了父类的所有的构造方法,那么就会继承父类中的所有的便利构造方法
3.如果我们子类中的一个指定构造方法写的参数和父类的便利构造方法的参数是一样的,不算重写
4.如果我们写了和父类中一模一样的便利构造方法,那么我们在创建对象使用便利构造方法的的时候实现的就是子类的便利构造方法
阅读全文
0 0
- Swift-便利构造函数和指定构造函数继承关系
- swift 构造函数 与便利构造函数
- Swift之便利构造函数
- swift 创建类方法(扩展)和便利构造函数
- iOS 开发 -- Swift (十一) 便利构造函数
- swift中便利函数的构造
- Swift学习记录 -- 18. 便利构造函数
- Swift 基础学习(指定构造方法和便利构造方法)
- 13.1 Swift指定构造方法和便利构造方法解析
- Swift-指定构造方法和便利构造方法
- OC初始化函数和便利构造器
- 构造函数的继承关系
- 构造函数和继承
- 继承和构造函数
- Objective-C学习- 便利初始化函数和便利构造器
- Objective-C中的便利初始化函数和便利构造器
- Swift基础3.3——便利构造函数
- 1.8 C# 继承和继承关系中的构造函数
- 腾讯和医院开启“互联网+糖尿病云防控”计划,探索医疗新模式
- 可穿戴然并卵?能省医疗费还能救命
- centos下删除文件后空间并未释放
- “特斯拉将成下一个苹果”只是信徒们的一场意淫
- SpaceX是如何实现人类历史上第一次海上回收火箭的?
- Swift-便利构造函数和指定构造函数继承关系
- JSP九大内置对象
- 我的学习记录18
- 腾讯副总裁丁珂:社会合力共担网民信息财产安全的守护者
- 腾讯联合行业伙伴共推守护者计划 将反诈骗生态推进“最后一公里”
- LintCode 二叉树的最大节点
- hive导入/导出数据
- Linux文件属性、权限、umask、find
- php连接sql server 2008