Object的clone方法可以帮助我们克隆对象。现在需编写一个类Car包含:
1.属性:
private String name;
private CarDriver driver;
private int[] scores;
2.无参构造函数
public Car() {
}
3.方法:
@Override
public String toString() {
return "Car [name=" + name + ", driver=" + driver + ", scores=" + Arrays.toString(scores) + "]";
}
setter/getter方法与clone方法。注意:clone方法需实现对象的深度克隆。
CarDriver为已经定义好的类,部分代码如下:
class CarDriver {
private String name;
public CarDriver() {}
//setter/getter
//toString
}
/ 请在这里填写答案,即Car类的完整代码 /
class CarDriver {
private String name;
public CarDriver() {}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "CarDriver [name=" + name + "]";
}
}
class Car implements Cloneable{
//都是引用数据类型 得考虑深拷贝
private String name;
private CarDriver driver;
private int[] scores;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public CarDriver getDriver() {
return driver;
}
public void setDriver(CarDriver driver) {
this.driver = driver;
}
public int[] getScores() {
return scores;
}
public void setScores(int[] scores) {
this.scores = scores;
}
public Car() {
}
@Override
public String toString() {
return "Car [name=" + name + ", driver=" + driver + ", scores=" + Arrays.toString(scores) + "]";
}
@Override
public Car clone() throws CloneNotSupportedException {
Car car=new Car();
CarDriver cd=new CarDriver();
String nm;
int []t;
if(this.driver==null) {
cd=null;
}else {
cd.setName(driver.getName());
}
car.setDriver(cd);
if(this.name==null) {
nm=null;
}else {
nm=name;
}
car.setName(nm);
if(scores==null) {
car.setScores(null);
}else {
t=Arrays.copyOf(scores, scores.length);
car.setScores(t);
}
return car;
}
}
本文详细介绍了如何在Java中实现Car类的深度克隆,包括属性的复制、CarDriver类的实例化及scores数组的深拷贝。通过重写clone方法,确保了对象及其引用类型成员变量的完全独立。
1411

被折叠的 条评论
为什么被折叠?



