gpt4 book ai didi

java - 将对象类更改为java中的子类

转载 作者:行者123 更新时间:2023-11-29 07:34:39 25 4
gpt4 key购买 nike

我想将类 Car 的对象更改为类 FastCar 的对象。很容易看出 main 方法在这种情况下返回错误。我写它是为了更容易表达我的问题:我如何围绕父类(super class)的对象构建子类的对象?考虑到类可能不小,最好的方法是什么下面的例子? 该解决方案也适用于具有很多字段的大类。

    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;
}

更新
正如@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。我想要一些技巧,在不丢失数据的情况下将我的“汽车”转换为“快车”。此外,此技巧对于较大的类(class)也应该有效。

最佳答案

有几种方法可以进行向下转换:

  1. FastCar 类中添加构造函数 FastCar(Car car)
  2. Car 类中引入方法 public FastCar asFastCar()
  3. 在任何地方引入 util 方法 public static FastCar castToFastCar(Car car)

关于java - 将对象类更改为java中的子类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37509051/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com