任何類別追溯至最上層父類別,一定就是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的子類別。