Java – 是否可以使用单个类扩展类的所有子类?
让我们用一个例子来解释它,实际的代码要复杂得多.我有一个Animal类,它有自己的类层次结构.假设它有两个子类:Testarrosa和Viper.
public class Car { public abstract String getManufacturer(); } public class Testarossa extends Car{ public String getManufacturer(){ return "Ferrari"; } } public class Viper extends Car{ public String getManufacturer(){ return "Dodge"; } }
我想用RegisteredCar子类扩展所有Car子类.
public class RegisteredCar extends Car { private String plateNumber; public RegisteredCar (String plateNumber){ this.plateNumber=plateNumber; } public String getPlateNumber() { return plateNumber; } }
在某些时候,我应该能够创建一个特定子类的新RegisteredCar.就像是
RegisteredCar c = new RegisteredCar<Viper>("B-3956-AC");
并调用c.getManufacturer()获取“Dodge”和c.getPlateNumber()以获得B-3956-AC.显然,我仍然可以创建一个Car c = new Viper();
解决方法
正如其他人所说的那样,没有那些不太可能,你的例子可以通过改变你的模型来解决
作为继承的替代方法,您可以使用另一个类来包装Car实例.
我会让Car成为一个接口(虽然注册Car的扩展也应该工作),然后尝试类似下面的伪代码:
class RegisteredCar<T extends Car> implements Car { private final T car RegisteredCar(T car) { this.car = car; } ... methods for RegisteredCar ... methods from Car delegating to `this.car` }
请原谅有些不好的代码,我没有打开IDE,而且我总是在没有IDE的情况下弄乱泛型.
另一个可能的解决方案是使用AOP,虽然我不知道现在的时尚如何,但你所描述的可能是一个跨领域的问题.
最后的替代方案可能是使用允许扩展,特征,协议或其他类型的“混合”的语言