1:允許將子類別的參考付給父類別的對象,但子類別中的那些不是從父類別繼承來的成員將不再可見。
範例:
Bus bus=new Bus(); Car car=bus;
但是car實例不可以引用bus中的非繼承域,如p載人數。
2:this和super
this引用目前類別的變數或方法,super引用目前物件的直接父類別的變數或方法
3:多態
同一個名字可以有多種實作狀態,同一個類別內部,可以擁有同名的,參數列表不同的方法,子類別也可以有同父類同名的變數和方法。
1)覆寫(override),當子類別繼承了父類別的同名無參函數時,子類別新寫的方法會覆寫父類別的方法,(傳回類型必須相同)
2)重載(overload)繼承了父類別的同名有參函數,並且方法參數不同時稱為重載,使該方法具有自己的特性。
3)重寫(overwrite)目前類別的同名方法,同一個類別中可以有多個具有相同名字的方法,由傳遞給他們的不同個數和類型的參數來決定使用哪一個方法。
覆寫和重載針對父類,重寫針對子類別。
4:抽象類別定義
抽象類別可以有自己的資料成員,也可以又非abstract的成員方法,也可以有抽象方法,抽象方法只有函數定義部分,沒有函數體。
子類別繼承抽象類別時必須實作所有的abstract方法。
5:介面
java只支援單一繼承,為了實現多重繼承,設計了介面。一個類別只可以有一個直接父類,但是可以實作多個介面。
介面中的方法可以有參數清單和傳回類型,但是沒有任何方法體。
介面中可以包含字段,但是會被隱士地宣告為static和final
介面中的字段只能儲存在該介面的靜態儲存區域內,而不屬於該接口。
介面中的方法為public
擴充一個介面來產生新的介面使用關鍵字extends,實作一個介面使用implements.
java介面的方法只能是抽象的和公開的,java介面比java抽象類別更抽象。
6:介面與抽象類別的差異
1)抽象類別可以提供實作方法,介面不能提供。如果在抽象類別中新增一個方法,則它的所有子類別一下子就得到了這個方法,但是接口,所有實作這個介面的類別必須都再實作這個方法才行。
2)抽象類別只能繼承一個,而可以實作多個介面。
「預設適配模式」:java介面在最上面,然後緊跟著抽象類別。
3)介面可以被嵌套,既可以被某個類別嵌套,也可以被介面嵌套。
7:靜態類別
即定義了靜態方法、靜態變數、靜態程式碼區塊的類別。靜態類別不能被實例化,累的成員都是靜態的。意味著告訴編譯器,這個方法不需要建立一個此類的物件即可使用。費靜態類別一般需要實例話後才能操作。靜態類別在運行時載入到記憶體中,所以不用初始化,也沒有實例,因此在類別的內部也不能用this。
以上是java如何實作物件導向編程的詳細內容。更多資訊請關注PHP中文網其他相關文章!