Ich entwerfe derzeit zwei Klassen in Java, und habe einige Probleme mit meinem aktuellen Problem der Vererbung zu verstehen, also habe ich einen einfachen Beispielcode in der Hoffnung, dass jemand kann mir helfen zu verstehen, was vor sich geht.Verwenden einer Methode der Elternklasse mit der Variablen der Kindklasse ohne Überschreiben
Also in diesem Beispiel eine Elternklasse (für allgemeine Zwecke könnten wir es Klasse Car nennen) und eine Kindklasse (Klasse RedCar). Die Elternklasse, die abstrakt ist, enthält eine Attributdistanz und enthält eine Methode von computeVelocity, die die Eingabeargumentzeit (doppelt) nimmt und einen doppelten Wert der Entfernung dividiert durch die Zeit zurückgibt (wodurch Geschwindigkeit gegeben ist).
Die Kindklasse hat einen Konstruktor, RedCar (double inputDistance). Es sollte auch Zugriff auf die Methode computeVelocity haben, ohne es zu überschreiben.
Hier ist das Problem. Logisch verstehe ich, dass computeVelocity die Variable inputDistance nicht von RedCar verwenden sollte, weil sie eine Methode einer anderen Klasse aufruft. Was ich jedoch wissen möchte, ist, wie man diese Methode in die RedCar-Klasse bringt, damit sie innerhalb der Klasse mit den Argumenten verwendet werden kann, die dem Konstruktor übergeben werden. Hier
ist ein Beispiel für den Code
//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);
}
}
Es ist nicht wirklich klar zu mir, was Sie versuchen, hier zu tun, oder warum muss das Verfahren überhaupt außer Kraft gesetzt werden. Da der Override nichts hinzufügt, wieso überhaupt? Warum nicht einfach die "computeVelocity" -Methode der Basisklasse verwenden? – David
Sie sollten kein zweites Distanzfeld in der Unterklasse haben. Das Entfernungsfeld der Basisklasse ist übrigens immer 0. Habe einfach einen geschützten Konstruktor in der Basisklasse, der Abstand als Argument nimmt, und rufe es (unter Verwendung von 'super (distance)') vom Unterklassenkonstruktor auf. –