Java 像这样使用继承是对的?
我是学习Java继承的学生 我正在制作一个程序(比特币挖掘游戏) 我做了一个关于挖掘机的类图 在节目中, 有一个普通的挖掘机(这只挖硬币) 超频挖掘机(这可以挖掘并且可以超频以更快地挖掘)和 耐久性恢复挖掘机(可以挖掘、超频和恢复耐久性(每个挖掘机都有耐久性,挖掘时耐久性下降) (有一些属性和方法我没有在图片中描述。我认为我的问题不需要这些。) 我不确定我是否做对了。我希望得到一些关于继承的反馈 或者不使用继承。我应该创建这样的类吗 因为只有一个函数添加到类中Java 像这样使用继承是对的?,java,class,inheritance,diagram,Java,Class,Inheritance,Diagram,我是学习Java继承的学生 我正在制作一个程序(比特币挖掘游戏) 我做了一个关于挖掘机的类图 在节目中, 有一个普通的挖掘机(这只挖硬币) 超频挖掘机(这可以挖掘并且可以超频以更快地挖掘)和 耐久性恢复挖掘机(可以挖掘、超频和恢复耐久性(每个挖掘机都有耐久性,挖掘时耐久性下降) (有一些属性和方法我没有在图片中描述。我认为我的问题不需要这些。) 我不确定我是否做对了。我希望得到一些关于继承的反馈 或者不使用继承。我应该创建这样的类吗 因为只有一个函数添加到类中 感谢您的阅读!这可能是装饰器模
感谢您的阅读!这可能是装饰器模式的一个很好的候选者,它允许您在运行时将自定义功能应用于单个对象。Wikipedia页面上提供了一个很好的参考,其中包括一个窗口系统的详细示例,并提供了一个UML类图供参考f代码显示装饰器和混凝土装饰器:
// 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";
}
}
在您的例子中,装饰器将被称为diggerdecotor
,而具体的装饰器可以被称为OverclockDecorator
和RecoverDurabilityDecorator
实例化完全修饰对象的代码可能如下所示:
Digger decoratedDigger = new OverclockDecorator(new RecoverDurabilityDecorator(new SimpleDigger()));
如您所见,此解决方案仍然使用继承,但单个功能可以“混合使用”根据需要。谢谢你的回答。我没有学习抽象类。所以我想我只是使用了图表的第一张图片。我想知道我是否使用了第一张图片。我是否使用了继承错误?还有关于装饰器模式的问题。如果我使用该模式,将有digger类、simple digger类和d类igger decorator类、overclock digger类和durablity digger dlass。对吗?digger将是一个接口,其他将是类,DiggerDecorator是一个抽象类。要回答您关于是否错误使用继承性的问题,它看起来像是一个
DurabilityRecover
类,不一定需要过锁挖掘器的子类,这不符合单一责任原则。在我看来,这可以通过混合功能来克服。这有帮助吗?嗨,欢迎来到StackOverflow!请回答您的问题以澄清您的具体问题,或添加其他详细信息以突出您需要的内容预计起飞时间。