这样使用Inheritance对吗?

Using Inheritance like this is right?

我是 Java 中学习继承的学生。

我正在制作一个程序(比特币挖矿游戏)。在程序中,有不同种类的挖掘机(矿机):

我做了这个class图(有些属性和方法我没有在图片中描述。我认为我的问题不需要这些。):

我不确定我做的对不对,尤其是使用 if 继承。

不使用继承,我应该像这样创建一个 class 吗?因为只有一个函数添加到 classes:

这可能是装饰器模式的一个很好的候选者,它允许您在 运行 时间将自定义功能应用于单个对象。可以在 Decorator Pattern 维基百科页面上找到一个很好的参考,其中包括一个窗口系统的详细示例,以及一个 UML class 图供参考。一段代码展示了装饰器和具体的装饰器:

// abstract decorator class - note that it implements Window
abstract class WindowDecorator implements Window {
    private final Window windowToBeDecorated; // the Window being decorated

    public WindowDecorator (Window windowToBeDecorated) {
        this.windowToBeDecorated = windowToBeDecorated;
    }
    @Override
    public void draw() {
        windowToBeDecorated.draw(); //Delegation
    }
    @Override
    public String getDescription() {
        return windowToBeDecorated.getDescription(); //Delegation
    }
}

// The first concrete decorator which adds vertical scrollbar functionality
class VerticalScrollBarDecorator extends WindowDecorator {
    public VerticalScrollBarDecorator (Window windowToBeDecorated) {
        super(windowToBeDecorated);
    }

    @Override
    public void draw() {
        super.draw();
        drawVerticalScrollBar();
    }

    private void drawVerticalScrollBar() {
        // Draw the vertical scrollbar
    }

    @Override
    public String getDescription() {
        return super.getDescription() + ", including vertical scrollbars";
    }
}

在您的情况下,装饰器将被称为 DiggerDecorator,具体装饰器可以被称为 OverclockDecoratorRecoverDurabilityDecorator.

实例化完全装饰对象的代码可能如下所示:

Digger decoratedDigger = new OverclockDecorator(new RecoverDurabilityDecorator(new SimpleDigger()));

如您所见,此解决方案仍然使用继承,但个别功能可以根据需要"mixed in"。