【发布时间】:2016-07-04 19:30:06
【问题描述】:
考虑下面的java代码:
class Enclosing {
void method(){}
void method(String str){}
class Inner {
void method(){}
}
}
我正在读一本书,它告诉我Inner.method() 将隐藏Enclosing.method() 的两个版本,这意味着如果我在课堂上的某处调用method(aString) Inner 是错误的。
为什么语言是这样设计的?
更新:
根据@Debosmit Ray 给出的答案,它与shadowing 有关。我已阅读文档并了解它是什么。
让我感到困惑的是,为什么方法阴影基于方法名称而不是方法签名?
【问题讨论】:
-
它不仅限于内部类。派生类具有相同的行为。这些只是 Java 的规则。 C++ 也是一样。
标签: java inner-classes shadowing