Java 面向物件特徵
java面向物件的三大特徵是什麼?
那就是封裝、繼承、多型。
但說到面向物件,還有一個很主要的特徵就是抽象。
-
封裝
每一個類中都會有屬性和方法,封裝指的就是把屬性和方法隱藏起來,只保留一些對外的介面和外部進行互動。
封裝的好處:
i.減少耦合;
ii.方便的修改自己的實現程式碼,不用修改那些呼叫我們程式碼的程式片段。
-
繼承
繼承就是子類繼承父類的特徵和行為,使得子類物件具有父類的非private屬性和方法。
a)類的繼承格式:
通過extends關鍵字申明一個類繼承另一個類,如
class父類{}
class子類extends父類{}
b)為什麼需要繼承?
減少程式碼重複、臃腫,提高程式碼可維護性。
-
多型
多型就是同一個介面,使用不同的實現,而執行不同的操作。
如圖:
a)多型的三個必要條件:
i.繼承(extends)
ii.重寫(子類重寫父類的同名方法)
iii.父類引用指向子類的物件,如:
Animal a = new Cat() ;
父類引用animal指向子類cat
-
抽象
抽象是將一類物件的共同特徵總結出來構造類的過程,包括資料抽象和行為抽象,資料抽象指的是屬性,行為抽象指的是方法。
(1)抽象方法:使用abstract修飾的方法是抽象方法。
(2)抽象類:包含抽象方法的類是抽象類,抽象類使用abstract修飾。
(補充:不準確,抽象類中可以不包含抽象方法,但是如果一個抽象類中不包含抽象方法,定義為抽象類沒有意義,所以我們就認為包含抽象方法的類就是抽象類)。
i.抽象類不能建立物件;
ii.如果一個類繼承了抽象類,子類必須實現父類的抽象方法。如果子類沒有實現父類的抽象方法,則必須將子類也定義為abstract。
iii.抽象類就是用來作為父類,讓子類繼承的。如果我們定義了一個抽象類,卻不去繼承它,就等於白白建立了一個抽象類,沒有任何意義。