swift学习 - 属性和方法的继承(override)

属性:

  1. 对计算式属性(实例属性+ 类型属性),子类均可以重写(有能力,看父类允不允许->修饰符限制),如果不想让子类重写,在计算式属性前加final关键字,或者直接在整个类class 前加final限制符。

1.1 对计算式实例属性来说,如果不想子类重写,直接加final修饰就好了
1.2 对计算式类型属性来说,可以用class关键字来修饰属性,表示允许子类重写,也可以用static修饰,表示不允许子类重写。注意此时的static 等效于 final class 修饰符

  1. 对存储式属性(实例属性+ 类型属性)来说,均不允许子类重写存储室属性(无能力,均不允许), 因为不能有同样的名字存在。

    2.1. 对存储式实例属性来说,虽然不允许子类重写该存储式属性, 但是如果允许子类重写存储式实例属性的属性观察者.注意重写监听者的时候,不允许对实例变量初始化。且调用顺序是先调用子类的willset,再调用父类的willset, 再调用子类的didset,再调用父类的didset。
    2.2. 对存储室类型属性来说,只能用static修饰,不能用class,且不能重写改实例类型属性的属性观察者。

方法:

1.类方法,需要用static或者class修饰(class修饰只有在类中可以使用,枚举和结构体的类方法只能用static),在类方法前用class修饰表示该类方法可以被子类重写,加static则不可以被子类重写, 此时static = final class
2.实例方法。 加final 则不可以被子类重写.

你可能感兴趣的:(swift学习 - 属性和方法的继承(override))