【发布时间】:2011-04-05 02:06:27
【问题描述】:
在下面的程序中,main方法中有一个实现接口的匿名类 TestInt 被实例化并打印。
在打印任何对象时,都会调用其类的 toString 方法。但是类 Foo 也扩展了 Object ,它有一个公共的 String toString() 方法,testInt 接口也是如此。那么我们在 main 中覆盖了哪个函数?一个来自 Object 还是一个来自 TestInt ?
interface TestInt{ String toString(); }
public class Foo {
public static void main(String[] args) {
System.out.println(new TestInt() {
public String toString() { return "foo"; }
});
}
}
上面的程序编译运行良好,并生成“foo”作为输出。
【问题讨论】:
-
嗯,你不是要在这里实例化一个接口吗?这段代码真的有效吗?
-
@Richard 它正在实例化一个实现 TestInt 的匿名内部类。
-
@Richard:我不是 Java 人,但我相信上面的代码是有效的:他正在实例化一个实现
TestInt的 anonymous 类。 -
@Isaac:它是一个内部类吗?
-
@user691451 是的。
new Foo(){}是匿名内部类的语法。
标签: java