属性覆盖的四种情况
----
1 . 子类的覆盖属性的要求 : 子类中覆盖的属性有特定的要求 , 不能是延迟加载属性 , 下面列举几种常见的方式 ;
2 ....覆盖属性声明在子类主构造函数中 : 可以将子类中覆盖的父类属性声明在主构造函数中 , 如下示例 :
open class Father {
open var age : Int = 60
}...父类初始化流程 :
① 父类构造函数 : 先调用主构造函数 / 次构造函数 ;
② 父类初始化 : 然后调用父类属性构造器 和 init 初始化代码块 , 这两个模块优先级相同 , 根据其代码顺序从上到下执行...子类初始化流程 : 执行完父类初始化后 , 开始执行子类初始化 ;
① 子类构造函数 : 执行子类构造函数剩余部分 ( 如果有的话 , 一般是次构造函数 ) ;
② 子类初始化 : 执行子类属性构造器...初始化过程中的覆盖属性 : 这里加入对覆盖属性的考虑 , 父类初始化过程中 , 子类覆盖的属性还没有初始化 , 父类的 open 属性可能在子类初始化过程中被修改 ;
5 .