Swift继承

2023-08-29  本文已影响0人  Lillian呆呆哒

继承是一种基础行为,将类与Swift中的其他类型区分开来。一个类可以从另一个类继承方法、属性和其他特征。当一个类从另一个类继承时,继承类被称为子类,它继承的类被称为其超类。在Swift中,类可以调用和访问超类的方法和属性、下标脚本,并且可以重写它们。也可以为类中继承来的属性添加属性观察器。

基类

没有继承其他类的类,称为基类。

定义一个基类计算和,例如:

子类

子类是将新类建立在现有类的基础上的行为。子类继承了现有类的特征,然后您可以细化这些特征。您还可以向子类添加新特征。

重写(Overriding)

子类可以通过继承来的实例方法,类方法,实例属性,或下标脚本来实现自己的定制功能,我们把这种行为叫重写(overriding)。

我们可以使用 override 关键字来实现重写。

访问超类的方法、属性及下标脚本,通过使用super前缀来访问超类的方法,属性或下标脚本。方法:super.somemethod(),属性:super.someProperty(),下标脚本:super[someIndex]

重写方法和属性

在子类中我们可以使用 override 关键字来重写超类的方法。

重写属性

你可以提供定制的 getter(或 setter)来重写任意继承来的属性,无论继承来的属性是存储型的还是计算型的属性。

子类并不知道继承来的属性是存储型的还是计算型的,它只知道继承来的属性会有一个名字和类型。所以你在重写一个属性时,必需将它的名字和类型都写出来。

注意点:

如果你在重写属性中提供了 setter,那么你也一定要提供 getter。

如果你不想在重写版本中的 getter 里修改继承来的属性值,你可以直接通过super.someProperty来返回继承来的值,其中someProperty是你要重写的属性的名字。

重写属性观察器

可以在属性重写中为一个继承来的属性添加属性观察器。这样一来,当继承来的属性值发生改变时,你就会监测到。

注意:不可以为继承来的常量存储型属性或继承来的只读计算型属性添加属性观察器。

防止重写

使用 final 关键字防止它们被重写。如果你重写了final方法,属性或下标脚本,在编译时会报错。也可以通过在关键字class前添加final特性(final class)来将整个类标记为 final 的,这样的类是不可被继承的,否则会报编译错误。

上一篇 下一篇

猜你喜欢

热点阅读