Java學習1-子類實例化時調用父類構造函數時this指向

Java學習1-子類實例化時調用父類構造函數時this指向

 

Java久疏戰陣,重新拾起碰到了不少問題,以前的基礎知識忘得差不多了,趁着不能出門多學習下。

子類通過new的形式實例化時,會調用父類的構造,那麼此時在父類中的this關鍵字指向的是誰呢?通過實際代碼來看看。

父類Animal

public class Animal {

    private String name;

    private Integer age;

    public void print(){
        System.out.println("super class");
    }

    public Animal(String name, Integer age) {
        this.name = name;
        this.age = age;
        this.print();
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }
}

子類Cat

public class Cat extends Animal{

    private String color;


    public void print(){
        System.out.println("sub class");
    }

    public Cat(String name,Integer age,String color) {
        super(name,age);
        this.color = color;
    }

    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }
}

測試類MainTest


public class MainTest {

    public static void main(String[] args) {

        Cat cat = new Cat("aa",12,"red");


    }
}

輸出結構

sub class

從這個結構可見在父類構造函數中this關鍵字確實指向了子類的實例。

在父類的構造函數中判斷下this的類型

public Animal(String name, Integer age) {
        this.name = name;
        this.age = age;
        this.print();
        if(this instanceof Cat){
            System.out.println("just is a cat !");
        }
    }

再次執行

sub class
just is a cat !

確實指向了子類。

更深層次的原理,我要再看看this的用法和存在繼承關係的類加載時的關係。

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