让超类的方法由继承的类实现

时间:2017-07-09 15:41:12

标签: 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
    }
}

我这样做的原因是因为我有多个class es A,所有人都有共同的方法methodX()methodY()我有多个{{1}延伸class所有人都有一些共同的属性给B但需要有不同的方式来做B并且有不同的methodY()

那么,我如何才能让equals/hashcode.实现唯一的B,但让C和D实现methodX()而不返回methodY()或在{{1}中不执行任何操作} null

1 个答案:

答案 0 :(得分:2)

您需要将B类声明为抽象

public abstract class B extends A{
    public Foo medhodX(){
        // stuff
    }
}

通过声明类抽象,你不允许他实现所有抽象方法(来自超类或实现的接口)。因此,您只能实现一个抽象方法并强制子类实现所有剩余的抽象方法。