【发布时间】:2015-06-17 07:35:59
【问题描述】:
我使用一个库,其中抽象类用抽象方法覆盖从Object 继承的具体方法:
public abstract class A {
@Override
public abstract boolean equals(Object obj);
}
要扩展这个类,我必须实现equals 方法:
public class B extends A {
@Override
public boolean equals(Object obj) {
return obj != null && obj.getClass() == B.class;
}
}
为什么抽象方法 (A::equals) 可以覆盖具体方法 (Object::equals)?我看不出这样做的目的。
【问题讨论】:
-
这里正好相反——基类有一个抽象方法,非抽象派生类有一个覆盖基类方法的非抽象方法。
-
@sharptooth 我的问题不是很清楚。我说的是
A::equals覆盖Object::equals -
我想你应该在问题中明确表达。由于您只介绍了您的两门课程,因此我确定问题仅与它们有关。
-
@sharptooth 我已经编辑了我的问题
-
A不是覆盖B的equals(),它是覆盖B的A,这是设计类时最常见的事情之一,因为它迫使你在equals()的B中实现,就像interface
标签: java object overriding abstract-class