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