Java中super和this關鍵字詳解

父類空間優先於子類對象產生

在每次創建子類對象時,先初始化父類空間,再創建其子類對象本身。目的在於子類對象中包含瞭其對應的父類空間,便可以包含其父類的成員,如果父類成員非private修飾,則子類可以隨意使用父類成員。代碼體現在子類的構造方法調用時,一定先調用父類的構造方法。

理解圖解如下: 

super和this的含義

super :代表父類的存儲空間標識(可以理解為父親的引用)。 this :代表當前對象的引用(誰調用就代表誰)。

super和this的用法

訪問成員:

this.成員變量 ‐‐ 本類的 super.成員變量 ‐‐ 父類的 this.成員方法名() ‐‐ 本類的 super.成員方法名() ‐‐ 父類的

用法演示,代碼如下:

class Animal {
    public void eat() {
        System.out.println("animal : eat");
    }
}
class Cat extends Animal {
    public void eat() {
        System.out.println("cat : eat");
    }
    public void eatTest() {
        this.eat(); // this 調用本類的方法
        super.eat(); // super 調用父類的方法
    }
}
public class ExtendsDemo08 {
    public static void main(String[] args) {
        Animal a = new Animal();
        a.eat();
        Cat c = new Cat();
        c.eatTest();
    }
}

輸出結果為:

animal : eat
cat : eat
animal : eat

訪問構造方法:

this(…) ‐‐ 本類的構造方法 super(…) ‐‐ 父類的構造方法

子類的每個構造方法中均有默認的super(),調用父類的空參構造。手動調用父類構造會覆蓋默認的super()。 super() 和 this() 都必須是在構造方法的第一行,所以不能同時出現。

繼承的特點

1.Java隻支持單繼承,不支持多繼承。

//一個類隻能有一個父類,不可以有多個父類。 class C extends A{} //ok class C extends A,B… //error

2.Java支持多層繼承(繼承體系)。

class A{} class B extends A{} class C extends B{}

頂層父類是Object類。所有的類默認繼承Object,作為父類。

3.子類和父類是一種相對的概念。

到此這篇關於Java中super和this關鍵字詳解的文章就介紹到這瞭,更多相關Java super和this內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: