物件導向的概念不外乎-> 封裝、繼承、多型、抽象、介面
封裝:在初始化一個class時,將內容物用private的方式包起來,而另外提供接口去給外界使用,可達到保護其資料隱私。
private: 只有自己類別的成員能夠存取
public: 任何人都可以調用
protected: 其父類與子類可使用,其他不可使用。
繼承:假設創建一個父類別Animal,所有跟動物有關的類別都屬於Animal,所以皆可以繼承Animal,繼承之後的動物都會繼承其屬性跟方法,ex: 屬性 -> 重量、身高,方法 -> 吃、喝、睡。
繼承的方法:class 子類別 extends 父類別{
}
多型:雖然子類別繼承父類別,不過子類別可以更改其中相同的函數執行不同的內容。
抽象(abstract) :修飾類別及方法的關鍵字。要注意的是當類別是屬於抽象化的話,那就不能被物件化,。如以下錯誤的例子:
存在的目的是專門用來被繼承而已。
而抽象的方法 (abstract void eat())則只能寫方法名稱,無法寫內容,只能由子類別去進行override。
介面(interface): 目的是為了描述不同類別的共同行為。
像是冰箱與烤箱皆為電氣設備,但卻不能彼此繼承,加上JAVA不能多重繼承,所以採用implements的方式執行,如下:
宣告介面的方法:必須由類別自己去定義介面提供的方法。雖然不能多重繼承,但可以多重implements。
參考資料: