【发布时间】:2015-06-05 10:21:24
【问题描述】:
我发现以下代码可以编译:
class Ideone
{
public static void main (String[] args){
new Ideone().m();
}
final private void m(){
System.out.println("private final method");
}
class A extends Ideone{
public void method(String [] args){
m();
}
}
}
并执行。
我很想知道这个。
你能解释一下为什么 java 设计者(创始人)让它起作用吗?
【问题讨论】:
-
没有错;
m未被覆盖。 -
final表示不要覆盖我,而不是不要继承我 -
您可以调用 private 方法
Ideone#m(),因为类A在类Ideone的范围内。不确定这是否是您的意思? -
如果你担心的是
private- 顶级类声明中的所有代码都可以访问private方法,包括嵌套类声明中的代码。 -
对不起,愚蠢的问题。不幸的是,我无法删除它
标签: java inheritance private inner-classes final