public class Demo8 {
void f(){
System.out.println(this.getClass().getSimpleName());
}
}
public class Demo9 extends Demo8 {
void g(){
f();
super.f();
}
public static void main(String[] args) {
new Demo9().g();
}
}
super.f()是调用父类的方法,新建子类实例对象的时候也会新建一个父类对象,super调用父类方法不是结果是Demo8吗,但是结果却是Demo9,望高手们点醒!
void f(){
System.out.println(this.getClass().getSimpleName());
}
}
public class Demo9 extends Demo8 {
void g(){
f();
super.f();
}
public static void main(String[] args) {
new Demo9().g();
}
}
super.f()是调用父类的方法,新建子类实例对象的时候也会新建一个父类对象,super调用父类方法不是结果是Demo8吗,但是结果却是Demo9,望高手们点醒!
解决方案
20
你本人也说了,调用的是方法,本人debug一下,this是Demo9
10
调用的是父类,只是继承而已!生成的就是子类本人的对象
10
Java生成对象的唯一途径是通过new关键字,没有显示的调用new Demo8(),就不会生成父对象。