java中的子父類

子類構造函數的特點

    在子類中所有的構造函數的第一行都默認存在着super()語句,調用父類的構造函數。

    調用本類的構造函數用this(實參列表)

    調用父類的構造函數用super(實參列表)

注:1.this和super不能同時存在,二者都應該放在構造函數的第一行

       2.當父類沒有空參數構造函數時,子類需要顯示定義super(參數)語句指定要訪問的父類中的構造函數。

爲什麼子類初始化都要訪問父類中的構造函數?

    因爲子類繼承了父類中的內容,所以創建對象時必須要看父類是如何對內容初始化的。(父類的初始化要先完成)

覆蓋:當子父類中出現一模一樣的方法時,子類對象運行的是子類中的方法。

覆蓋注意事項:

1.子類方法覆蓋父類方法,必須要保證權限大於等於父類權限

2.靜態只能覆蓋靜態或者被靜態覆蓋

3.覆蓋是函數的特性,不能用於成員變量


class Car extends Vehicle
{
    public static void main (String[] args)
    {
        new  Car(). run();
    }
    private final void run()
    {
        System. out. println ("Car");
    }
}
class Vehicle
{
    private final void run()
    {
        System. out. println("Vehicle");
    }
}
如果父類方法的權限是private,則對子類是不可見的,子類無法覆蓋父類的方法,故上述代碼會輸出Car。

如果將父類和子類的權限都改爲public,則在父類的run方法會出現編譯錯誤,因爲被final修飾的方法不能被覆蓋。








發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章