我想将类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 –