Java设计:为扩展相同基类的类添加通用功能,而不修改基类

时间:2016-02-16 21:10:06

标签: java polymorphism abstract

我试图找出如何在我正在进行的项目中最好地解决这个问题。我将对问题进行类比:

有一个班级,汽车。在 Car 之外,我创建了3个扩展它的类:

  • Limo 扩展 Car
  • 卡车扩展汽车
  • 总线扩展汽车

现在,我知道有人忘了在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中工作,所以我不认为我可以使用默认关键字(并不是说我已经阅读了足够的关键字以了解它是否适​​用对于这种情况:()

1 个答案:

答案 0 :(得分:1)

有两种方法可以实现这一目标:

  1. getSpeed()添加到Car类,以便其他类可以继承此方法。这可能是它遵循OOP的最佳方式。

  2. 创建一个界面并向其添加getSpeed()。唯一的事情是,当你实现界面时,像Limo,Truck和Bus这样的其他类必须创建getSpeed()的主体。