java 中的繼承

一、繼承是從已有的類中派生出新的類,新的類能吸取已有類的數據屬性和行爲,並能擴展新的能力java

  • 繼承是面向對象最顯著的一個特性
  • 子類又被稱爲派生類; 父類又被稱爲超類(Super Class)
  • 子類即便不擴充父類,也能維持父類的操做
  • 子類其實是將父類定義的更加的具體化的一種手段
  • 父類表示的範圍大,而子類表示的範圍小
  • Java之中只容許多層繼承,不容許多重繼承,Java存在單繼承侷限

二、默認狀況下,子類會找到父類之中的無參構造方法this

  • 若是要實例化子類對象,會默認先調用父類構造,爲父類之中的屬性初始化
  • 再調用子類構造,爲子類之中的屬性初始化
  • 子類的構造而言,就至關於隱含了一個super()的形式
  • 若是這個時候父類沒有無參構造,則子類必須經過super()調用指定參數的構造方法
  • super調用父類構造時,必定要放在構造方法的首行

三、規律總結一: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
    }
}
相關文章
相關標籤/搜索