如果匿名类被定义为接口的类型,那么匿名类将实现该接口,但是如果它被定义为另一个类的类型(如下所示),它似乎不会扩展该类(因为我是告诉它)。在Java中,匿名类与它被定义的类型有什么关系?
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);
}
}
在这里,如果匿名类扩展嵌套类则放出来会是“你好,从匿名类。”,运行输出然而,当写着“你好,从嵌套类。”
我想你是在你的匿名类中声明第二个字段。尝试删除字符串修饰符。让它成为string =“来自匿名类的你好。”并使字符串字段非私有。 – Others
这是真的,但我试图重写匿名类中的字符串。要访问父字符串,我不应该使用'super.string'? – Continuity8
啊......我现在明白了。我没有意识到这些字段是不可覆盖的;只有方法是。我正在像一个方法对待字符串字段。 – Continuity8