为什么下面的程序输出结果为aa?子类的同名动态方法不是应该覆盖了父类的同名动态方法吗?
另,我的环境为JDK1.8 windows版
public class Main
{
public static void main(String args[]){
bb b=new bb();
b.p();
}
}
abstract class aa{
public void x(){
System.out.println("aa");
}
}
class bb extends aa{
public void x(){
System.out.println("bb");
}
public void p(){
super.x();
}
}
另,我的环境为JDK1.8 windows版
public class Main
{
public static void main(String args[]){
bb b=new bb();
b.p();
}
}
abstract class aa{
public void x(){
System.out.println("aa");
}
}
class bb extends aa{
public void x(){
System.out.println("bb");
}
public void p(){
super.x();
}
}
b.x() 这个会输出 bb
aa a = new bb()
a.x()这个时候会打印出
bb.super.x()调用的是父类中的x()方法