iT邦幫忙

2024 iThome 鐵人賽

DAY 16
0
JavaScript

大樂透對獎系列 第 18

繼承

  • 分享至 

  • xImage
  •  

任何類別追溯至最上層父類別,一定就是java.lang.Object,也就是所有物件,都是一種Object。

String是一種Object,Date也是一種Object,任何型態的物件,都可以使用Object宣告的名稱來參考。這有什麼好處?如果有個需求是使用陣列收集各種物件,那該宣告的型態是Object[]。

自定義的ArrayList類別,內部使用Object陣列來收集物件,每一次收集的物件會放在next指定的索引處,在建構ArrayList實例時,可以指定內部陣列初始容量,如果使用無參數建構式,則預設容量為16。

有時候要解決的問題領域中,某些模型的型態架構是已知的,你想控制型態的邊界,像是控制Role只能有方才四個子類別,在Java 17之前,沒有適當的方式可以達成這類需求,然而Java 17以後的sealed關鍵字,可以達到需求。

可以使用sealed關鍵字修飾的類別必須是抽象類別,permits列出了允許的子類別,子類別必須在同一套件中定義,並且必須使用final、non-sealed、或sealed修飾,以上的程式片段使用了final,這表示其他人除了不能繼承Role以外,也不能建立Knight、Warrior、Mage、Archer的子類別。


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

尚未有邦友留言

立即登入留言