假设我的代码有这样的结构:
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
}
}
我这样做的原因是因为我有多个继承A
的类
,它们都有共同的方法methodX()
和methodY()
和我有多个扩展 B
的 class
都具有 B 的一些共同属性,但需要有不同的方法来执行 methodY ()
并具有不同的 equals/hashcode。
那么,我如何才能让 B
实现唯一的 methodX()
但让 C 和 D 实现 methodY()
而无需返回 null
或在 methodY()
中对 B
不执行任何操作?
最佳答案
您需要将类 B 声明为抽象类
public abstract class B extends A{
public Foo medhodX(){
// stuff
}
}
通过声明类抽象,您可以允许他不实现所有抽象方法(来自父类(super class)或实现的接口(interface))。因此,您可以只实现一个抽象方法,并强制子类实现所有剩余的抽象方法。
关于java - 让继承类实现父类(super class)的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44998139/