为了方便,我将程序简化了。public class A{
public A(){
System.out.println("A constructor:" + this);
} public String toString(){
return "class A";
}}public class B extends A{
public B(){
System.out.println("B constructor:" + this);
} public String toString(){
return "Class B";
}}public class Test{
public static void main(String args[]){
A a = new A();
B b = new B();
}
}执行结果为
A constructor:class A
A constructor:class B
B constructor:class A class B我的分析:A a = new A()调用了类A的构造函数打印了类A的toString(),第一行结果没问题。
  第二行,B b = new B();首先调用了类A的构造函数,打印了B(A的子类)的toString()方法,我认为这是因为多态造成的,类A中this是类B的对象。可是老师说,是因为继承类在内存中加载的缘故。加载的时候将超类加载到子类中,所以,类A中的this是类B的对象。可是如果将类A中多加任何一个方法,用类A中this调用,都可以调用类A的方法,如果说this是类B的,那么就不能调用。 所以我认为出现第二行结果是因为多态造成的。各位前辈,我是初学,请多多指教。这到底是怎么回事啊。我在线等~~~~~