我想將類Car
的對象更改爲類FastCar
的對象。在這種情況下很容易看到主方法返回一個錯誤。我寫它更容易表達我的問題:如何在超類的對象周圍構建子類的對象?考慮到下面的例子中的類可能不是很小,最好的方法是什麼? 該解決方案還應該適用於大類,並且有很多領域。在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
作爲@Arthur說:
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);
}
通過@Arthur提出的從FastCar
構造並不好,因爲不保留的標籤。
輸出是Car
,但我預計它是new Label
。 我想要一些技巧將我的「汽車」轉換爲「快速車」,而不會丟失數據。這個技巧也應該對大類更有效。
難道這些方式有利於大類呢? – webpersistence
另外,我認爲這是沮喪。 – webpersistence
是的,它是downcast –