重写对象 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 被迫提供自己的实现。
以下代码编译完全没问题。
根据我的理解,这不应该是因为 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 被迫提供自己的实现。