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