子类可以重写他所继承得到的属性。重写必须是 属性名与属性类型一样 而且要加override前缀。子类的新属性不能有与继承属性一样的名,除非是不同类型的属性。下面的这些规则也同样适用:
1、如果父类的属性是可写入的(一个存储属性或者一个带着setter的计算属性),那么子类的重写可以增加一个属性观察者。
2、或者子类的重写的是计算属性。这种情况下,如果父类的属性是存储属性,子类的计算属性重写必须包含setter和getter。
如果父类的属性是计算属性,子类的计算属性重写必须重新实现父类实现的所有访问器(accessor);如果父类属性是只读的(只有getter),那么重写可以添加setter。
重写的属性包含的函数可能会引用(读取或者写入)被继承的属性,这可以通过super关键字实现。
就像结构体和枚举类型,类可以拥有static成员,也可以有class成员。这两种成员都会被继承到子类中(也是static和class 的形式)。
从开发者的角度来看,标记了static和class的方法最主要的差别在于static方法不能被重写。也就是说:static与class final同义。
static与class属性的区别类似,不过有一点需要增加,是一个比较严苛的条件:static属性可以是存储属性和计算属性,而class属性只能是计算属性。
class 标记属性的时候,只能是计算属性。子类继承了该计算属性,并且可以重写它(无论是写作class还是static都可以),但是如果要标记为为static,不能重写成存储属性,这是为了遵循之前提到的继承规则。
网友评论