一个类继承的问题,不太好描述,直接贴代码

父类
public class MySuper {

public void say(){
System.out.println("super");
}

public void tosay(){
say();
}
}
子类:
public class MySub extends MySuper {

public void say(){
System.out.println("sub");
}

public static void main(String[] args) {
MySub sub = new MySub();
sub.tosay();
}
}

输出结果是 sub,就问一下这个地方为什么回调了子类的say方法而不是去执行父类的say方法呢

因为你实例化的对象是子类,所以你调用的方法是子类的方法,和父类的方法无关

很明显这是继承中的隐藏原则啊。

因为你的子类重写了父类的方法,所以调用的就是子类的了