不确定如何称呼我的标题,因为我现在不确定如何称呼该问题。
我有一个父类(super class)
和三个子类
。 子类
只有一个自己的cunstructor
,所有其他方法和属性都在父类(super class)
中列出。
现在,这三个子类
之一必须包含一个新属性delay
及其方法。但是如果我实现一个有点通用的方法(因为它不关心哪个子类正在使用它,因为它在方法本身中检查它。)但是在方法的父类(super class)中我希望如果我的对象属于可以访问延迟的特定子类。
任何人都可以告诉我如何在不将属性实现到父类(super class)本身中的情况下实现这一目标? (只希望该子类的对象可以访问该延迟属性)
else if (this instanceof repairCar) {
if(this.getDelay() != 0){
}
}
编辑:
有父类(super class):Car
This contains methods like setSpeed and corresponding attributes
ant a method called drive.
现在有子类:FastCar
NormalCar
RepairCar
它们都只有子类中的构造函数。
RepairCar 应该有另一个属性delay
,因为它现在正在修复。
在drive方法
的父类(super class)中,它检查Car是否是FastCar
、NormalCar
或RepairCar
。当它是一个 RepairCar
时,它应该检查延迟是否为 0,以便它可以行驶,否则它将等待一个转弯并降低延迟直到其 0。
现在我希望只有我的 RepairCar 具有此延迟属性,而不是我的其他两个子类。但是,如果我的驱动方法位于父类(super class)中,由于父类(super class)没有此属性,它不会让我引用 RepairCar 的延迟。
有什么方法可以实现父类(super class)中所有 3 个 Cartype 的驱动方法,而不在父类(super class)中实现延迟?
最佳答案
为什么父类(super class)应该对此负责?这只能由特定的类来完成。
例如
public class Car {
public void drive() {
// do something all cars do
}
}
您的子类是:
public class RepairCar extends Car {
public int delay() {
return this.delay;
}
@Override
public void drive() {
if (delay() == 0) {
super.drive();
} else {
decreaseDelay();
}
}
...
}
关于java - 引用父类(super class)如何使用子类方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29080349/