在以下程序的main方法中,一个实现接口的匿名类
TestInt实例化并打印。

在打印任何对象时,将调用其类的toString方法。但是Foo类也扩展了Object,它具有一个公共String toString()方法,而testInt接口也是如此。那么我们在main中重写了哪些功能?来自对象的一个​​还是来自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”作为输出。

最佳答案

您要覆盖Object#toString()并实现TestInt#toString()。但这是一个很挑剔的区别。由于这些方法具有相同的签名,因此对于所有实际目的而言,它们都是相同的。

10-04 20:18