[swift]初始化方法自动继承
来源:互联网 发布:怎么安装虚拟机linux 编辑:程序博客网 时间:2024/06/07 04:30
子类默认不会继承父类的初始化方法,然而,如果某种条件满足的话,父类的初始化方法还是可以继承给子类。在通常情况下,这意味着你不必复写父类的初始化方法,在安全的前提下可以以最低的代价继承父类的初始化方法。
假设子类新增的stored properties 都提供了默认值,那么提供了以下两条规则:
规则1:
如果你的子类没有定义任何的指定初始化方法(新增便利初始化方法可有可无),那么子类会自动继承父类的所有指定初始化方法。
规则2:
如果子类通过规则1,或者通过自定义实现父类的所有指定初始化方法,那么子类自动继承父类的所有便利初始化方法。(子类以便利初始化方法覆盖父类的指定初始化方法也视为对父类的指定初始化方法的实现。)
【注:Swift 的class 类型的初始化方法包括两种类型,指定初始化方法(Designated Initializer)和便利初始化方法(Convenience Initializer),默认是指定初始化方法,一个class类型至少提供一个指定初始化方法。)
原文:
Automatic Initializer Inheritance
As mentioned above, subclasses do not inherit their superclass initializers by default. However, superclass initializers are automatically inherited if certain conditions are met. In practice, this means that you do not need to write initializer overrides in many common scenarios, and can inherit your superclass initializers with minimal effort whenever it is safe to do so.
Assuming that you provide default values for any new properties you introduce in a subclass, the following two rules apply:
- Rule 1
If your subclass doesn’t define any designated initializers, it automatically inherits all of its superclass designated initializers.
- Rule 2
If your subclass provides an implementation of all of its superclass designated initializers—either by inheriting them as per rule 1, or by providing a custom implementation as part of its definition—then it automatically inherits all of the superclass convenience initializers.
These rules apply even if your subclass adds further convenience initializers.
NOTE
A subclass can implement a superclass designated initializer as a subclass convenience initializer as part of satisfying rule 2.
- [swift]初始化方法自动继承
- 13.8 Swift构造方法的自动继承
- Swift - 父子继承关系的初始化方法调用顺序
- 14.2 Swift析构方法的自动继承
- [Swift]Swift的初始化方法
- Swift的初始化方法
- Swift初始化方法
- Swift自定义初始化方法
- Swift初始化方法顺序
- 继承,初始化方法
- Swift初始化方法返回NIL
- Swift - 类初始化和反初始化方法
- OC之继承,初始化方法
- 涉及到继承的初始化方法
- OC之继承、初始化方法
- OC3_继承和初始化方法
- Objective-C( 继承,初始化方法)
- OC03 继承、初始化方法1
- uboot移植---start.s分析
- HDU 1284 钱币兑换问题(完全背包:入门题)
- Java List拆分
- GCC中的编译选项“-I”(大写i),“-L”(大写l),“-l”(小写l)等参数
- 关于_beginthreadex和CreateThread的区别
- [swift]初始化方法自动继承
- affinity的解释与示例
- C++ 重载、重写、隐藏
- IMPLEMENT_DYNCREATE(CMainFrame,CFrameWnd)
- 索引的读取工具IndexReader
- tableau计算两个日期的天数差距
- CloudStack4.4编译+安装+windows下开发环境配置
- 彻底理解线索二叉树
- 博弈论 算法摘记