В настоящее время я разрабатываю два класса в Java, и у меня возникают проблемы с пониманием моей текущей проблемы наследования, поэтому я создал простой пример кода в надежде, что кто-то может помочь мне понять, что происходит.Использование метода родительского класса с переменной дочернего класса без переопределения
Итак, в этом примере родительский класс (для общего назначения можно назвать классом Car) и дочерним классом (класс RedCar). Родительский класс, который является абстрактным, содержит расстояние атрибута и содержит метод computeVelocity, который принимает входное значение аргумента (double) и возвращает двойное значение расстояния, деленное на время (таким образом давая скорость).
У дочернего класса есть конструктор RedCar (double inputDistance). Он также должен иметь доступ к методу computeVelocity, не переопределяя его.
Вот где проблема. Логично, я понимаю, что computeVelocity не должен принимать переменную inputDistance из RedCar, потому что она вызывает метод другого класса. Однако я хочу знать, как привести этот метод в класс 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)') из конструктора подкласса. –