gpt4 book ai didi

Java:从父对象创建子类对象

转载 作者:IT老高 更新时间:2023-10-28 20:50:01 24 4
gpt4 key购买 nike

新手 Java 问题。说我有:

public class Car{
...
}

public class Truck extends Car{
...
}

假设我已经有一个 Car 对象,如何从这个 Car 对象创建一个新的 Truck 对象,以便将 Car 对象的所有值复制到我的新 Truck 对象中?理想情况下,我可以这样做:

Car c = new Car();
/* ... c gets populated */

Truck t = new Truck(c);
/* would like t to have all of c's values */

我必须编写自己的复制构造函数吗?每次 Car 获得新字段时都必须更新它...

最佳答案

是的,只需向 Truck 添加一个构造函数。您可能还想向 Car 添加一个构造函数,但不一定是公开的:

public class Car {
protected Car(Car orig) {
...
}

public class Truck extends Car {
public Truck(Car orig) {
super(orig);
}
...
}

通常,最好将类设为叶类(您可能希望将它们标记为最终类)或抽象类。

看起来好像你想要一个 Car 对象,然后让同一个实例变成一个 Truck。更好的方法是将行为委托(delegate)给 Car (Vehicle) 中的另一个对象。所以:

public final class Vehicle {
private VehicleBehaviour behaviour = VehicleBehaviour.CAR;

public void becomeTruck() {
this.behaviour = VehicleBehaviour.TRUCK;
}
...
}

如果您实现 Cloneable 那么您可以“自动”将对象复制到同一类的实例中。但是,这样做存在许多问题,包括必须复制可变对象的每个字段,这很容易出错并且禁止使用 final。

关于Java:从父对象创建子类对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/638171/

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