Ich möchte das Objekt der Klasse Car
in ein Objekt der Klasse FastCar
ändern. Es ist leicht zu sehen, dass die Hauptmethode in diesem Fall einen Fehler zurückgibt. Ich schrieb es, um einfacher zu sein, meine Frage auszudrücken: Wie kann ich ein Objekt einer Unterklasse um ein Objekt einer Oberklasse bauen? Was wäre der beste Weg, wenn man bedenkt, dass die Klassen nicht so klein sind wie in den folgenden Beispielen? Die Lösung sollte auch für große Klassen mit vielen Feldern funktionieren.Ändern einer Objektklasse in eine Unterklasse in Java
public class Car {
String name;
String label;
Car(String name){
this.name = name;
label = "Car";
}
Car(){
this("dafaultCarName");
}
}
public class FastCar extends Car{
String howFast;
FastCar(){
howFast = "veryFast";
}
FastCar(String name){
super(name);
howFast = "veryFast";
}
}
public static void main(String[] args) {
FastCar fast;
Car car = new Car("FastCarName");
fast = (FastCar) car;
}
UPDATE
Wie @Arthur sagte:
public class Car {
String name;
String label;
Car(String name){
this.name = name;
label = "Car";
}
Car(){
this("dafaultCarName");
}
}
public class FastCar extends Car{
String howFast;
FastCar(){
howFast = "veryFast";
}
FastCar(String name){
super(name);
howFast = "veryFast";
}
FastCar(Car car){
super(car.name);
}
}
public static void main(String[] args) {
FastCar fast;
Car car = new Car("FastCarName");
car.label = "new Label";
fast = new FastCar(car);
System.out.println(fast.label);
}
Die Konstrukteure von FastCar
von @Arthur vorgeschlagen sind nicht gut, weil das Etikett nicht erhalten bleibt.
Der Ausgang ist Car
, aber ich erwartete, dass es new Label
ist. Ich möchte einen Trick, um mein "Auto" in ein "schnelles Auto" umzuwandeln, ohne Daten zu verlieren. Auch dieser Trick sollte auch für größere Klassen effizient sein.
Sind diese Möglichkeiten auch für große Klassen gut? – webpersistence
Auch ich denke, es ist niedergeschlagen. – webpersistence
ja, es ist downcast –