一个很基础的问题,java 编程思想里的
class Base{
private final void f(){
System.out.println("Base.f()");
}
}
class Derived extends Base{
public final void f(){
System.out.println("Derived.f()");
}
}
public class Main {
public static void main(String[] args) {
Derived op1 = new Derived();
Base op2=op1;
op1.f();
op2.f();// 这一行为什么会出错?
}
}
根据我的理解,所谓动态性,就是在运行时正确识别对象的类型.op2虽然是一个基类引用,但它指向的是子类的实例,而子类是有一个public 的方法f()的 ,为什么op1能调用而op2不能调用,op1 和 op2 指向的是同一个对象嘛??why?