重写对象 class 方法中的接口与抽象 class

Interafce vs abstract class in overriding object class methods

以下代码编译完全没问题。

根据我的理解,这不应该是因为 Class C 实施 interface I

as abstract class 也无法编译。

interface I {
    public String toString();
}

class C implements I {

}

摘要class未编译

abstract class MyAbstractClass {
    public abstract String toString();
}

public class MyClass extends MyAbstractClass {
}

请帮助我理解这种行为,为什么抽象没有编译而接口可以?

每个 class 隐式扩展 java.lang.Object,并且 java.lang.Object 实现 toString() 方法。接口的契约由该实现满足,因此您的 class 无需提供自己的 toString().

实现

摘要 class 编译失败的原因是因为您将 toString() 方法显式定义为 abstract,从而表明具体扩展 classes 被迫提供自己的实现。