1. 程式人生 > >java繼承和多型、介面小結

java繼承和多型、介面小結

詳細程式碼自己找自己敲,以下會不定時更新。

一個檔案中只能有一個公共類
java的繼承只能是單繼承。

一個類之所以能夠呼叫父類成員,是由於java編譯器會自動為子類新增一個引用名為super的父類成員物件。建立子類物件的過程就是從底層的基類往上,一層層地來呼叫構造方法。

如果呼叫父類的有參構造方法,需要用到super關鍵字。

多型:
多型具體表現在重寫和過載
多型就是類的多種表現方式
比如同名不同參
子類重寫父類(
父類中的方法為private時,它不能重寫,該方法只能被自己的類訪問,不能被外部類訪問。
如果父類設定為public,而子類為private,編譯會報錯。

抽象類與介面:
1(1)只要有抽象方法,那麼這個類就必須是抽象類,必須在類上加abstract
(2)只要這個是抽象類,就至少有一個抽象方法
(3)如果一個類繼承了抽象類,就必須重寫所有抽象方法
(4) 繼承抽象類方法的函式的許可權必須是且必須寫public

2(1)介面中的只包含抽象方法和常量,不能夠有變數、初始化塊和建構函式
(2)一個類可以實現多個介面(修飾符只有預設和public)
(3)必須為所有方法提供實現和保持相同返回值
(4)重寫介面方法的時候必須加訪問許可權public(
介面中的方法只宣告,不實現,欄位都是final的static的(都是自動)。介面中的方法是abstract和public(這些都是自動)。當類來實現他的時候如果不新增public,那麼它只有包訪問許可權,這樣在方法被繼承的過程中,他的訪問許可權就會被降低。java編譯器中這樣的情況是不允許的。
)
(5)多個介面常量和方法名字相同(待寫)
(6)繼承介面方法的函式的許可權必須是且必須寫public

關於繼承順序:
(參考部落格http://blog.csdn.net/shijinupc/article/details/7692315,上面比較好的有例項)
* 幾大原則
* 一、靜態成員變數(Static)
* 1、靜態成員變數為類變數,所有物件共享同一記憶體空間
* 2、靜態成員變數的宣告和定義僅在首次載入類時執行一次
* 3、首次載入類時首先對所有靜態成員變數根據型別預設賦初值,然後再對有右值的附右值
* 二、靜態初始塊
* 1、靜態初始化塊僅在首次載入類時執行一次
* ······多個靜態成員變數與靜態始化快參照出現順序先後執行······
* 三、動態成員變數
* 1、動態成員變數定義在每次例項化物件時在建構函式之前執行
* 四、動態初始化塊
* 1、動態初始化塊在每次例項化物件時在建構函式之前執行
* ······多個動態成員變數與動態初始化塊參照出現順序先後執行······
* 總結:總的來說,在不涉及繼承的前提下,當首次載入類時,按照如下順序執行
* 1、按照出現順序先後執行靜態成員變數定義與靜態初始化塊
* 2、按照出現順序先後執行動態成員變數定義與動態初始化塊
* 3、執行建構函式
* 再次例項化物件時只執行第2、3步即可
*
* ············成員變數與定義與初始化塊先於建構函式執行·········
* 五、當涉及到繼承時,按照如下順序執行
* 1、執行父類的靜態成員變數定義與靜態初始化塊,執行子類的靜態成員變數定義與靜態初始化塊
* 2、執行父類的非靜態成員變數定義與動態初始化塊,執行父類構造方法
* 3、執行子類的非靜態成員變數定義與動態初始化塊,執行子類構造方法
* 另:父類構造方法中用到的方法如果已被子類重寫,那麼在構造子類物件時在呼叫父類建構函式中使用子類重寫的方法