У меня есть два простых Java-класса, и я пытаюсь понять больше о клонировании и о том, как приводить классы между уровнями. Это автомобиль суперкласса.
public class Vehicle implements Cloneable
{
public int x;
public Vehicle(int y) {
x = y;
}
@Override public Object clone() {
Object result = new Vehicle(this.x);
// Location "A"
return result;
}
}
А это подкласс Truck
public class Truck extends Vehicle
{
private int y;
public Truck(int z) {
super(z);
y = z;
}
@Override public Object clone() {
Object result = super.clone();
System.out.println(result.getClass());
((Truck) result).y = this.y;
return result;
}
}
Я пытаюсь получить копию Truck, используя суперкласс для клонирования, но проблемы с понижением рейтинга не разрешены. Я не совсем уверен, как это исправить или где ошибка.
Мне бы хотелось, чтобы: Грузовик a = новый Грузовик (1) и Грузовик b = a.clone () стали одним и тем же объектом.