王尘宇王尘宇

研究百度干SEO做推广变成一个被互联网搞的人

swift5基本语法-方法/重写

swift5基本语法-方法/重写

01.png

swift5基本语法-方法/重写

02.png

二、重写

1.重写类型方法
  • class修饰的类型方法,允许被子类重写;
  • static修饰的类型方法,不允许被子类重写。
class Animal {
   class  func speak() {
       print("Animal speak")
   }
}

class Cat: Animal {
   override class func speak() {
       print("override speak")
   }
}

swift5基本语法-方法/重写

03.png

:父类用class修饰,子类用static重写可以么?
例子:

swift5基本语法-方法/重写

04.png

答:可以。因为不管是通过class还是static来修饰,都代表类型方法,本质是不变的,但是会影响自己的子类,自己的子类不可以再次重写了。如下图所示:

swift5基本语法-方法/重写

05.png

2.重写实例属性
  • 子类可以将父类的属性( 存储、计算 )重写为【计算属性】。

    swift5基本语法-方法/重写

    08.png

  • 子类不可以将父类的属性重写为【存储属性】。

swift5基本语法-方法/重写

06.png

swift5基本语法-方法/重写

07.png

  • 只能重写var属性,不能重写let属性;
  • 重写时,属性名,类型要一致;
  • 子类重写后的属性权限,不能小于父类的属性权限;
  • 如果父类属性是只读的,那么子类重写后的属性可以是只读的,也可以是读写的;
  • 如果父类属性是可读写的,那么子类重写后的属性也必须是可读写的。
3.重写类型属性
  • class修饰的计算类型属性,可以被子类重写;
  • static修饰的类型属性(存储,计算),不可以被子类重写。

    swift5基本语法-方法/重写

    09.png

END.

相关文章

评论列表

发表评论:
验证码

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。