public class A {
public A(){
this.xx();
}
public void xx(){
System.out.println("Object A x method");
}
public static void main(String[] args) {
B b = new B();
}
}
class B extends A { public void xx() {
System.out.println("Object B x method");
}
}
构造子类对象的时候会先构造父类对象,也就是说A对象会先产生,那么在A对象中的this.xx()方法应该是打印Object A x method,但是为什么会打印Object B x method,求解啊!!!!
public A(){
this.xx();
}
public void xx(){
System.out.println("Object A x method");
}
public static void main(String[] args) {
B b = new B();
}
}
class B extends A { public void xx() {
System.out.println("Object B x method");
}
}
构造子类对象的时候会先构造父类对象,也就是说A对象会先产生,那么在A对象中的this.xx()方法应该是打印Object A x method,但是为什么会打印Object B x method,求解啊!!!!
是对象还没有构建完整,但对象是存在了的创建一个对象,第一件事就是给对象分配内存,分配了内存就表示对象存在了,分配内存用来干嘛?就是来存放实例的字段的(有些是编译器自动生成的,有些是程序里写的),而方法的字节码在加载class文件的时候就已经存在了
对,是多态哈,我刚开始因为new的是A, 既然是 new B ,不管指向的是A,还是B , 方法都被重写 了