【发布时间】:2018-08-09 07:38:32
【问题描述】:
我正在尝试找出如何在我正在处理的项目中最好地解决这个问题。我将这个问题做一个类比:
有一个类,汽车。在 Car 中,我创建了 3 个扩展它的类:
- 豪华轿车延伸汽车
- 卡车延伸汽车
- 巴士延伸汽车
现在,假设我意识到有人忘记在 Car 类中包含 getSpeed() 方法,我需要添加它。但是,我不能以任何方式修改 Car 类,并且这 3 个类必须扩展 Car。我怎样才能最好地为这 3 个类添加通用功能,而不必来回复制粘贴代码? getSpeed() 方法的实现对于每个类都是相同的,所以我想要一个抽象类之类的东西,但仍然能够将这些类保持为扩展 Car。
这是迄今为止我唯一的解决方法的一个例子,但我很好奇是否有更好的方法:
public class Limo extends Car {
CarSpeed cs;
public Limo() {
cs = new CarSpeed(this);
}
}
并让 CarSpeed 类包含实际的 getSpeed() 方法。
有没有我不知道的更清洁的方法?我也只能在 Java 7 中工作,所以我认为我不能使用 default 关键字(并不是说我已经阅读了足够多的内容来知道它是否适用于这种情况:()
【问题讨论】:
-
请问为什么不能将 getSpeed() 添加到 Car 中?继承的重点是采用父/基类的某些特性。
-
这是 jar 文件的一部分,我无法方便地重新编译 :(
-
哎呀。嗯....所以基本上你导入库然后正确吗?
-
对了,基本上能看到“车”的出处,但是不能用修改版不麻烦。
-
好吧,我不想这么说,我知道你不想复制/粘贴,但也许使用界面并不是一个糟糕的解决方案
标签: java polymorphism abstract