Code Bye

super关键字的疑惑

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,望高手们点醒!
解决方案

20

你本人也说了,调用的是方法,本人debug一下,this是Demo9

10

调用的是父类,只是继承而已!生成的就是子类本人的对象

10

Java生成对象的唯一途径是通过new关键字,没有显示的调用new Demo8(),就不会生成父对象。

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明super关键字的疑惑