1. 程式人生 > >【學習筆記】 唐大仕—Java程式設計 第4講 類、包和介面之4.2 類的繼承

【學習筆記】 唐大仕—Java程式設計 第4講 類、包和介面之4.2 類的繼承

【學習筆記】 唐大仕—Java程式設計 第4講 類、包和介面之4.2 類的繼承

super的使用

1.使用super訪問父類的域和方法

注意:正是由於繼承,使用this可以訪問父類的域和方法。但是有時為了明確指明父類的域和方法,就要用關鍵字super。this和super都是指當前同一個物件

例如:父類Student有一個域age,在子類Student中用age,那麼this.age,super.age來訪問age是完全一樣的:

    void testThisSuper(){
        int a; a = age; a = this.age; a = super.age; } 

當然,使用super不能訪問在子類中新增的域和方法

有時需要使用super以區分同名的域和方法

  • 使用super可以訪問被子類所隱藏了的同名變數
  • 又如,當覆蓋父類的同名方法的同時,又要呼叫父類的方法,就必須使用super。如:
    @Override
    void sayHello(){ super.sayHello(); System.out.println("My school is" + school); } 

在覆蓋父類的方法的同時,又利用已定義好的父類的方法

2.使用父類的構造方法

構造方法是不能被繼承的

  • 比如,父類Person有一個構造方法Person(String, int),不能說子類Student也自動有一個構造方法Student(String, int)

但是,子類在構造方法中,可以用super來呼叫父類的構造方法。

    Student(String name, int age, String school){ super(name, age); this.school = school; } 

使用時,super必須放在第一句

父類物件與子類物件的轉換

    • 類似於基本資料型別資料之間的強制型別轉換,存在繼承關係的父類物件和子類物件之間在一定條件下也可以相互轉換
      (1).子類物件可以被視為其父類的一個物件,如一個Student物件也是一個Person物件
      (2).父類物件不能被當做其某一個子類物件
      (3).如果一個方法的形式引數定義的是父類物件,那麼呼叫這個方法時,可以使用子類物件作為實際引數
      (4).如果父類物件引用指向的實際是一個子類的物件。那麼這個父類物件的引用可以用強制型別轉換(casting)成子類物件的引用