我正在努力理解在超类构造函数中使用时如何准确计算出“this”所指的内容。
我有三个班级:
public class Animal {
public int x;
public Animal() {
this.x++;
System.out.println(this);
System.out.println(this.x);
System.out.println();
}
public String toString() {
return "Animal";
}
}
public class Mammal extends Animal{
public int x;
public Mammal() {
this.x++;
System.out.println(this);
System.out.println(this.x);
System.out.println();
}
public String toString() {
return "Mammal";
}
}
public class Dog extends Mammal{
public int x;
public Dog() {
this.x++;
System.out.println(this);
System.out.println(this.x);
System.out.println();
}
public String toString() {
return "Dog " + x;
}
public static void main(String[] args) {
Dog rover = new Dog();
}
}
调用 Dog 构造函数的结果是:
狗 0 1
狗 0 1
狗 1 1
因此,当我在 Animal 构造函数中调用 this.toString() 时,this 指的是 rover(狗)。但是,当我在 Animal 构造函数中执行 this.x++ 时,它会增加 Animal 中的 x 而不是 Dog 中的 x。
那是对的吗?为什么 this.x++ 不增加流动站的 x?