作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
关于这段代码我有两个问题
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)成员。
您没有覆盖 Derived
类中的方法 f
,没有多态性。变量 po
的类型是 Override
,因此它将采用类 Override
中的方法 f
。
请注意,Override
类中的方法 f
在 Derived
类中根本不可见。类 Derived
中的方法 f
是一个不同的方法,它与父类(super class)中的方法 f
没有任何关系。
关于java - 令人困惑 "override a private method",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1346208/
我是一名优秀的程序员,十分优秀!