iT邦幫忙

2024 iThome 鐵人賽

DAY 16
0
JavaScript

大樂透對獎系列 第 22

介面

  • 分享至 

  • xImage
  •  

在實作預設方法時,可能會將演算法定義為更小的流程,而這些流程不用公開,基於此需求,介面可以定義private方法,可被預設方法呼叫,然而不用加上default修飾。

介面沒有實作時,判斷方法來源時會單純許多,為介面定義預設實作,可引入更強大的威力,然而也引入更多的複雜度,這時就需留意採用的是哪個預設方法。

介面也可以被繼承,而抽象方法或預設方法都會繼承下來,子介面再以抽象方法重新定義父介面已定義的抽象方法,通常是為了文件化,這是常見的實踐(Practice),因為沒有實作,也就沒有辨別實作版本的問題。

若介面定義了預設方法,辨別實作版本時有許多需要注意的地方。例如,父介面的抽象方法,在子介面中可以用預設方法實作,父介面的預設方法,在子介面中可以被重新定義。

若父介面有個預設方法,子介面再度宣告與父介面相同的方法簽署,但沒有寫出default,也就是沒有方法實作,子介面就是重新定義該方法為抽象方法了。

若有兩個父介面定義了相同方法簽署的預設方法,就會引發衝突。例如,假設Part與Canvas介面都定義了default的draw方法,而Lego介面繼承Part、Canvas時,沒有重新定義draw,就會發生編譯錯誤。


上一篇
介面
下一篇
介面
系列文
大樂透對獎30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言