我目前正在设计两个班在Java中,和我遇到一些麻烦了解我目前的继承问题,所以我在希望创建一个简单的示例代码有人可以帮助我理解正在发生的事情。使用与子类的变量父类的方法,而不覆盖
因此,在这个例子中,一个父类(通用,我们可以把它叫做Car类)和子类(类雷德卡)。父类是抽象的,包含一个属性距离,并且包含一个computeVelocity方法,该方法使用输入参数时间(double),并返回距离除以时间的双倍值(从而给出速度)。
子类有一个构造函数,雷德卡(双inputDistance)。它还应该可以访问computeVelocity方法,而不会覆盖它。
这里是哪里出了问题。从逻辑上讲,我明白computeVelocity不应该接受来自RedCar的inputDistance变量,因为它调用另一个类的方法。然而,我想知道的是如何将该方法引入RedCar类,以便可以在构造函数中使用参数的情况下在该类中使用该方法。
下面是代码
//Car Class
public abstract class Car{
//abstract variable
private double distance;
//compute velocity method
public double computeVelocity(double time){
return distance/time;
}
}
//RedCar Class
public class RedCar extends Car{
public double distance;
public RedCar (double inputDistance){
this.distance = inputDistance;
}
//This is currently my method but I believe this already constitutes as overridding
public double computeVelocity(double hours){
Car.super.computeVelocity(hours);
}
}
这不是真的我清楚你想在这里做什么,或者为什么该方法需要在所有覆盖。由于覆盖不会添加任何内容,为什么它没有?为什么不只是使用基类“computeVelocity”方法呢? – David
你不应该在子类中有第二个距离字段。顺便说一下,基类的距离字段始终为0.只需在基类中有一个受保护的构造函数,并将距离作为参数,并从子类构造函数中调用它(使用'super(distance)')。 –