现有2个简单的类,class A为基类,B为子类。A中有一个getClone(),现在的问题是B的getClone函数该如何写?public class A {
private int nums[];

public A(){
}
public A(int size){
nums= new int[size];
}
public int getSize(){
return nums.length;
}
public int getNum(int index){
return nums[index];
}
public void setNum(int index, int value){
nums[index] = value;
}
public A getClone(){
try{
A clone = this.getClass().newInstance();
clone.setSize(this.getSize());
for(int i = 0; i < this.getSize(); i++){
clone.setNum(i, nums[i]);
}
return clone;
}catch(InstantiationException ex){
return null;
}catch(IllegalAccessException ex){
return null;
}
}
private void setSize(int size){
nums = new int[size];
}
}
public class B extends A {
anotherClass temp; public B (){
}
public B (int size, anotherClass value){
super(size);
this.temp = value;
}
public B getClone() {  该如何写???  现在我是这样写的: 
B clone = new B(this.getSize(), this.temp);
for (int i = 0; i < clone.getSize(); i++){
clone.setNum(i, this.getNum(i));
}
return clone;
}
}这样写虽然好像没有问题,但我觉得并不好,挺别扭,基本就是复制A的代码。
请问有没有更好的写法,最好是先调一下super.getClone()之类的?
注:class A的代码不能修改。

解决方案 »

  1.   

    你直接不要重写getClone方法,重用父类的不就好了,如果是一样的话。如果不一样,那么把能继承下来的super下来,剩下的再重写。
    public class TestChange {    public static void main(String[] args) 
        {
         Son s = new Son(8);
        
         s.print();
        }
    }class Father{
    private int i;

    public Father(int num){
    this.i = num;
    }

    public void print(){
    System.out.println(this.i);
    }
    }class Son extends Father{
    private int j;

    public Son(int num){
    super(num);
    }
    }