[Swift] 覆寫 static 函式不成功?改用 class 函式吧!

在 Swift 中,函式是我們很常用到的工具,但是如果我們將函式宣告為 static,在使用繼承來覆寫 static 函式時,通常都不能成功。但在實務上,我們有時會遇到要覆寫 static 函式,那又該如何才能覆寫 (override) 一個 static 的函式呢?

swift

 

首先,先看一下我們的範例。

  1. class A {
  2.  
  3.     static func print() {
  4.         Swift.print("Hello A")
  5.     }
  6.  
  7. }
  8.  
  9. class B: A {
  10.  
  11.     override static func print() {
  12.         Swift.print("Hello B")
  13.     }
  14. }

 

這時,編繹器很聰明的跳出「Cannot override static method」的警告了! 那我們該如何解呢?答案很簡單,將 static 改為 class 就好,以這一個例子如下:

  1. class A {
  2.  
  3.     class func print() {
  4.         Swift.print("Hello A")
  5.     }
  6.  
  7. }
  8.  
  9. class B: A {
  10.  
  11.     override class func print() {
  12.         Swift.print("Hello B")
  13.     }
  14. }

 

這時我們的函式就被覆寫啦,是不是超級簡單的呢?