说我的代码有这个结构:
public abstract class A{
public abstract Foo methodX();
public abstract Bar methodY();
}
public class B extends A {
public Foo methodX(){
// stuff
}
public Bar methodY(){
// more stuff
}
}
public class C extends A {
public Foo methodX() {
// stuff
}
public Bar methodY(){
// What to do?
}
}
public class D extends C {
public Bar methodY() {
// do stuff
}
}
public class F extends C {
public Bar methodY() {
// do different stuff
}
}
我这样做的原因是因为我有多个class
es A
,所有人都有共同的方法methodX()
和methodY()
我有多个{{1}延伸class
所有人都有一些共同的属性给B但需要有不同的方式来做B
并且有不同的methodY()
那么,我如何才能让equals/hashcode.
实现唯一的B
,但让C和D实现methodX()
而不返回methodY()
或在{{1}中不执行任何操作} null
?
答案 0 :(得分:2)
您需要将B类声明为抽象
public abstract class B extends A{
public Foo medhodX(){
// stuff
}
}
通过声明类抽象,你不允许他实现所有抽象方法(来自超类或实现的接口)。因此,您只能实现一个抽象方法并强制子类实现所有剩余的抽象方法。