java - 让继承类实现父类(super class)的方法

标签 java inheritance methods code-structure

假设我的代码有这样的结构:

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() 和我有多个扩展 Bclass 都具有 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/

相关文章:

java - Android Java 中的 Final

java - 解析运算符和操作数

c++ - 派生类调用错误的基类构造函数

javascript - 从数组中的对象方法访问数组

java - 方法返回Java赋值

java - java/android中如何检查字符串值是否属于UUID?

java - 在Java中添加KeyListener

python - python 2.7 中的继承

java - 通过 java 中的继承为不同的实现重用算法逻辑

java - 如何在Android Studio中使用View Parameter调用方法