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的用法和存在继承关系的类加载时的关系。

发布了96 篇原创文章 · 获赞 22 · 访问量 31万+

猜你喜欢

转载自blog.csdn.net/chuan_day/article/details/104109964