Swift 子类初始化方法总结

1 文档说 有三条Rule:
“Rule 1
A designated initializer must call a designated initializer from its immediate superclass.

Rule 2
A convenience initializer must call another initializer from the same class.

Rule 3
A convenience initializer must ultimately call a designated initializer.”

其实就是说 convennience只能横向调用,designed只能纵向调用

Paste_Image.png

2 关于自定义初始化 是区别于convennience & designed的,如果你的自定义初始化 前面加convennience,就需要调用同级的初始化,没有修饰的话就需要调用super的designed。

Paste_Image.png

参考下面代码

“class RecipeIngredient: Food {
    var quantity: Int
    init(name: String, quantity: Int) {
        self.quantity = quantity
        super.init(name: name)
    }
    override convenience init(name: String) {
        self.init(name: name, quantity: 1)
    }
}”
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 原文地址:http://huizhao.win/2016/11/13/swift-init/ 从 Objectiv...
    赵大老板阅读 34,562评论 11 121
  • 1、自定义初始化方法要先调用自己类默认初始化方法,自己重写默认初始化方法要先调用父类默认初始化方法2、应该要先调用...
    霏誠拜咬o阅读 1,442评论 0 0
  • 我想知道,这个工具的主要目的在与什么 我想知道,这个工具跟其他的工具有什么不同 该工具说,其目的是为了使人们专注于...
    古侯子阅读 526评论 0 3
  • 小时候从露天电影开始启蒙,后来是VCD,DVD, 网络追剧,不停地做白日梦,自己也写心理分析。但重来没有关注过演员...
    津城燕窝Donna阅读 978评论 0 0