java - 如何实现抽象子类继承的方法?

标签 java inheritance static overriding abstract

使用 Java 工作。

我定义了几个不同的抽象类,每个抽象类都有一个名为 aCommonMethod 的静态方法。每个方法还有一个依赖方法,该方法本身调用 CommonMethod,如下所示:

public abstract class SomeAbstractClass{
    public static void aCommonMethod() {
    // does something
    }

    public static void someDependentMethod() {
    //some stuff
    aCommonMethod()
    //some more stuff
    }
}

方法 someDependentMethod 对于我的每个抽象类来说都是相同的,除了通过调用 CommonMethod 来调用的方法之外。

在 Java 中实现这个的惯用方法是什么?到目前为止,除了将 aCommonMethod 方法实际复制到每个抽象类中之外,我找不到任何有效的方法。显然,最好在某个地方只编写一次该方法,然后让我的抽象类以某种方式继承它。我找不到任何方法在 Java 中做到这一点。

最佳答案

首先,你不能重写静态方法,如果你希望不同的类有不同的行为,可能需要 template pattern .

示例:

public abstract class SomeAbstractClass{
    public abstract void aCommonMethod();

    public void someDependentMethod() {
        //some stuff
        aCommonMethod();
        //some more stuff
    }
}

public abstract class SomeClass{
    public void aCommonMethod() {
        // Do your thing
    }
}

public abstract class SomeOtherClass{
    public void aCommonMethod() {
        // Do your thing
    }
}

new SomeClass().someDependentMethod();
new SomeOtherClass().someDependentMethod();

关于java - 如何实现抽象子类继承的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36631986/

相关文章:

java - 使用 java.lang.Object 字段的 JAXB 编码对象

java - 在同一个包中子类化 sun.* 类会给出 IllegalAccessError

java - 类中的静态方法与接口(interface)中的默认方法具有相同的签名

linux - 如何在gentoo上安装jre?

javascript - Android - 使用 JSOUP 解析 JS 生成的 url

c++ - 从多重继承/菱形继承(钻石问题)

java - 是否可以使用 Jackson 将静态类转换为 JSON?

java - 为什么静态变量被认为是邪恶的?

c++ - 来自命名空间的静态变量不会递增

java - 在Java中复制一些文本后如何获取系统剪贴板图像?