Java中的繼承、super和this、final和static等知識點

2020.6.18 20:29

繼承

繼承是面向對象的三大特徵之一,可使得子類具有父類的屬性和方法,也可在子類中重新定義以及追加屬性和方法。
格式:通過extends來實現
注意點:繼承只能單繼承,通俗說父親只能有一個。
例如:class A extends B{ … }

class 子類 extends 父類{  ...  }

class student extends people{ … }
繼承的好處:

  • 使得類與類之間產生關係,父子關係,子類可使用父類中的非私有成員。
  • 提高代碼的複用性,多個類相同的成員可以放到同一個類中。
  • 提高代碼的維護性,只需修改一處即可。
    弊端:類之間產生了關係,增強了類的耦合性,當父類發生改變時,子類中的實現也會隨着變化,削弱了子類的獨立性。

super和this關鍵字

this代表本類對象的引用。
super代表父類存儲空間的標識。

this.成員變量---->訪問本類成員變量
super.成員變量---->訪問父類成員變量
構造方法:
this(…):訪問本類的構造方法
super(…):訪問父類的構造方法

子類所有的構造方法都會默認訪問類中的無參構造方法。

方法重寫

子類出現和父類中一模一樣的方法聲明,方法名一樣,參數列表也必須一樣。
子類需要父類中的功能,還可有自己定義的特有內容。
Override註解:【檢驗】當前方法是否爲重寫的方法。

方法重寫注意事項:

  1. 私有方法不能被重寫
  2. 子類方法的訪問權限不能更低(public > 默認 > 私有)
public class Fu {
    private void show() {
        System.out.println("Fu中show()方法被調用");
    }

    void method() {
        System.out.println("Fu中method()方法被調用");
    }
}

public class Zi extends Fu {

    /* 編譯【出錯】,子類不能重寫父類私有的方法*/
    @Override
    private void show() {
        System.out.println("Zi中show()方法被調用");
    }
   
    /* 編譯【出錯】,子類重寫父類方法的時候,訪問權限需要大於等於父類 */
    @Override
    private void method() {
        System.out.println("Zi中method()方法被調用");
    }

    /* 編譯【通過】,子類重寫父類方法的時候,訪問權限需要大於等於父類 */
    @Override
    public void method() {
        System.out.println("Zi中method()方法被調用");
    }
}

final關鍵字

修飾基本數據類型變量:數值不能發生改變
修飾引用數據變量時:引用類型的地址值不能發生改變,內容可變。

public static void main(String[] args){
    final Student s = new Student(23);
  	s = new Student(24);  // 錯誤
 	s.setAge(24);  // 正確
}

static關鍵字

static表示靜態,可修飾【成員方法】和【成員變量】
可使用類名和對象名來調用。推薦使用類名調用。
重點

  • 非靜態的成員方法:能訪問靜態的成員變量、非靜態的成員變量、靜態的成員方法、非靜態的成員方法。
  • 靜態的成員方法:能訪問靜態成員變量、靜態的成員方法
    總結:靜態成員方法只能訪問靜態成員。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章