Swift构造器链
2016-05-25 23:08
357 查看
IDE:Xcode Version7.3.1
本人也是初学者,文字都是本人手打的学习笔记,有不对不准确的地方请指出,非常感谢!
指定构造器:
1>名字为init的方法前没有前缀(子类重写时有override除外),
2>一个类中至少有一个指定构造器,其必须初始化类中的所有实例存储属性
便利构造器:
1>前缀为convenience的init方法,便利构造器属于次要的,辅助性的构造器.
2>便利构造器必须调用同一个类中的其他构造器完成其初始化.
3>只有类中才有便利构造器,枚举结构体中是没有的.
构造器链:(即构造器之间的调用)
1>指定构造器总是向上调用父类的构造器(如果有父类)
2>便利构造器总是横向调用当前类的其他构造器
3>构造器链的最终节点一定是父类的指定构造器(如果有父类)
本人也是初学者,文字都是本人手打的学习笔记,有不对不准确的地方请指出,非常感谢!
指定构造器:
1>名字为init的方法前没有前缀(子类重写时有override除外),
2>一个类中至少有一个指定构造器,其必须初始化类中的所有实例存储属性
便利构造器:
1>前缀为convenience的init方法,便利构造器属于次要的,辅助性的构造器.
2>便利构造器必须调用同一个类中的其他构造器完成其初始化.
3>只有类中才有便利构造器,枚举结构体中是没有的.
构造器链:(即构造器之间的调用)
1>指定构造器总是向上调用父类的构造器(如果有父类)
2>便利构造器总是横向调用当前类的其他构造器
3>构造器链的最终节点一定是父类的指定构造器(如果有父类)
class Fruit{ var name:String var weight:Double //定义指定构造器 最少一个且这一个要负责初始化勒种所有的实例存储属性 init(name:String){//① self.name = name self.weight = 0.0 } //定义便利构造器 convenience init(name:String,weight:Double){//② //调用本类中的①号指定构造器 self.init(name:name) self.weight = weight } //定义另一个便利构造器 有外部参数 convenience init(n name:String,w weight:Double){//③ //调用本类的②号便利构造器 self.init(name:name) } } class Apple:Fruit{ var color:String init(name:String, weight:Double, color:String){//④ //指定构造器必须先向上调用父类构造器,然后才能对继承得到的属性赋值 // self.name = "123"//会报错,因为还没有调用父类的构造器 // print("color:\(self.color)")//报错 因为还没有初始化 self.color = color print("color:\(self.color)")//初始化了 ok了 //子类的指定构造器必须调用父类的指定构造器,此处调用父类①号构造器 super.init(name: name) self.weight = weight } init(){//⑤ //指定构造器必须先初始化当前类中定义的实例存储属性(子类的独有属性),然后才能向上调用父类构造器 self.color = ""//这一行如果写在super.init(name:"")后面就会报错 //子类指定构造器必须调用父类的指定构造器,此处调用父类①号构造器 super.init(name: "") self.weight = 0.0 } //定义一个便利构造器 convenience init(name:String,color:String){//⑥ //调用本类中④号指定构造器 self.init(name:name,weight:0.0,color:color) } //定义另一个便利构造器 convenience init(n name:String,c color:String){//⑦ //调用本类中⑥便利构造器 self.init(name:name,color:color) } }
相关文章推荐
- swift uitableview 多选
- Swift-数组
- 总结一下使用Swift遇到的几个小问题和几个小知识点
- Swift 必备开发库 (高级篇)
- [快速学会Swift第三方库] Cartography篇
- swift学习0,oc及swift的混用
- swift资源库——开发利器 Playground
- Swift开篇005->闭包
- swift基础笔记6-方法&下标脚本
- 哈希表——swift字典的实现原理
- [swift学习之十二]二维码创建练习
- [快速学会Swift第三方库] HanekeSwift篇
- 日期函数的使用(swift)
- Swift --> Map & FlatMap
- swift String 扩展
- swift UIView 扩展
- swift基础笔记5-属性
- Swift 必备开发库 (高级篇) (转)
- Swift开篇004->集合
- 74个Swift标准库函数