Java – 是否可以使用单个类扩展类的所有子类?
|
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实例. 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,虽然我不知道现在的时尚如何,但你所描述的可能是一个跨领域的问题. 最后的替代方案可能是使用允许扩展,特征,协议或其他类型的“混合”的语言 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
