【发布时间】:2013-06-01 12:00:52
【问题描述】:
我很难理解在超类构造函数中使用“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 中而不是在 Dog 中增加 x。
正确吗?为什么 this.x++ 不增加流动站的 x?
【问题讨论】:
标签: java inheritance polymorphism