java - 引用父类(super class)如何使用子类方法

标签 java inheritance subclass superclass

不确定如何称呼我的标题,因为我现在不确定如何称呼该问题。 我有一个父类(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是否是FastCarNormalCarRepairCar 。当它是一个 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/

相关文章:

Java 泛型 - <K extends Middle> - K 是 Middle 的真正子代吗?

python - 自动将对象从类转换为子类

java - 如何在抽象父类(super class)中使用子类的方法

java - Javafx中给图片添加边框

java - 使用spring r2dbc时找不到javax.persistence注解

java - 实现没有接口(interface)类型参数的接口(interface)

java - 微服务中的事务

c++ - 为什么我的复制列表初始化在我添加继承后停止工作?

Swift 协议(protocol)继承无法编译

java子类问题