一、繼承是從已有的類中派生出新的類,新的類能吸取已有類的數據屬性和行爲,並能擴展新的能力java
二、默認狀況下,子類會找到父類之中的無參構造方法this
三、規律總結一:code
A:訪問成員變量的原則:就近原則。 B:this和super的問題: this 訪問本類的成員 super 訪問父類的成員(能夠理解爲的) C:子類的全部構造方法執行前默認先執行父類的無參構造方法。 D:一個類的初始化過程: 成員變量進行初始化過程以下: 默認初始化 顯示初始化 構造方法初始化
四、規律總結二:xml
A:一個類的靜態代碼塊,構造代碼塊,構造方法的執行流程: 靜態代碼塊 > 構造代碼塊 > 構造方法 B:靜態的內容是隨着類的加載而加載, 即:靜態代碼塊的內容會優先執行。 C:構造代碼塊 在類中方法外出現(即類中的成員位置),把多個構造方法方法中相同的代碼存放到一塊兒,用於對象進行初始化, 每次調用構造方法都執行,而且在構造方法前執行。 C:子類的全部的構造方法默認都會去訪問父類的無參構造方法。
五、規律總結三:對象
A:成員變量的問題 int x = 10; //成員變量x是基本類型 Student s = new Student(); //成員變量s是引用類型 B:一個類的初始化過程 先進行成員變量的初始化: 默認初始化 顯示初始化 構造方法初始化 C:子父類的初始化(分層初始化) 先進行父類初始化,而後進行子類初始化。
class X { //成員變量(引用類型) Y b = new Y(); //無參構造方法 X() { System.out.print("X"); } } class Y { //無參構造方法 Y() { System.out.print("Y"); } } public class Z extends X { //成員變量(引用類型) Y y = new Y(); //無參構造方法 Z() { //super(); //它僅僅表示要先初始化父類數據,再初始化子類數據。 System.out.print("Z"); } public static void main(String[] args) { new Z(); //執行結果:YXYZ } }