【发布时间】:2014-02-19 01:42:48
【问题描述】:
如果匿名类被定义为接口的类型,那么匿名类实现了接口,但是如果它被定义为另一个类的类型(如下所示),它似乎并没有扩展类(因为我被告知确实如此)。
public class AnonymousClassTest {
// nested class
private class NestedClass {
String string = "Hello from nested class.";
}
// entry point
public static void main (String args[]){
AnonymousClassTest act = new AnonymousClassTest();
act.performTest();
}
// performs the test
private void performTest(){
// anonymous class to test
NestedClass anonymousClass = new NestedClass() {
String string = "Hello from anonymous class.";
};
System.out.println(anonymousClass.string);
}
}
这里,如果匿名类扩展了嵌套类,那么输出将是“来自匿名类的 Hello。”,但是当运行时,输出显示为“来自嵌套类的 Hello。”
【问题讨论】:
-
我认为您在匿名类中声明了第二个字段。尝试删除字符串修饰符。使它成为 string="来自匿名类的你好。"并使字符串字段非私有。
-
这是真的,但是我试图覆盖匿名类中的字符串。要访问父字符串,我不应该使用
super.string吗? -
啊……我明白了。我没有意识到字段是不可覆盖的;只有方法是。我将 String 字段视为一种方法。
标签: java nested relationship anonymous-types anonymous-class