超级比外部类别具有更高的优先级吗?外部与超级类别
考虑,我们有三类:
- ClassA的
- ClassB的
- 匿名类ClassB的扩展ClassA的
ClassA.java:
public class ClassA {
protected String var = "A Var";
public void foo() {
System.out.println("A foo()");
}
}
ClassB的。 java:
public class ClassB {
private String var = "B Var";
public void test() {
new ClassA() {
public void test() {
foo();
System.out.println(var);
}
}.test();
}
public void foo() {
System.out.println("B foo()");
}
}
当我打电话new ClassB().test()
,我得到下面的输出(这是相当多预期):
A foo()
A Var
问:是不是从某处内部类需要(方法和成员)所定义的第一超类,然后从外部类还是它
JVM
编译器实现依赖?我已经看过JLS(§15.12.3),但找不到任何参考,可能是在那里指出的,但我误解了一些术语?
我试图按照JLS中的逻辑,但没有我的咖啡;-)从经验我会说:我**漂亮**确定这是很好的指定和**不* *依赖于实现。 *如果*它是实现相关的,那么它将取决于编译器,而不取决于JVM,因为该决定是在编译时完成的。 – 2011-05-03 09:11:29
@Joachim - 我错误地写了JVM,谢谢指出。 – MByD 2011-05-03 09:17:27