我对此代码有两个问题
public class Override {
private void f() {
System.out.println("private f()");
}
public static void main(String[] args) {
Override po = new Derived();
po.f();
}
}
class Derived extends Override {
public void f() {
System.out.println("public f()");
}
}
/*
* Output: private f()
*/// :~
1)函数f在Override po的引用上如何可见;
2)为什么输出“private f()”
最佳答案
main
方法位于Override
类内部,因此当然可以看到Override
类的私有(private)成员。 f
中的Derived
,没有多态性。变量po
的类型为Override
,因此它将从类f
中采用方法Override
。 请注意,类
f
中的Override
方法在Derived
类中根本不可见。类f
中的Derived
方法是另一种方法,它与父类(super class)中的f
方法无关。关于java - 令人困惑的 “override a private method”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1346208/