当前位置: 代码迷 >> Java相关 >> 有关clone接口的问题
  详细解决方案

有关clone接口的问题

热度:251   发布时间:2012-04-28 22:02:20.0
有关clone接口的问题
设计一个点Point类,圆类Circle继承点类,分别实现clone方法,实现一个测试类来实现Circle的自我复制。(提示:实现clone接口)


public class Point implements Cloneable
{
    private int x;
    private int y;
    public Point()
    {
    }
    public Point(int X, int Y)
    {
        x=X;
        y=Y;
    }
    public void setX(int X)
    {
        x=X;
    }
    public void setY(int Y)
    {
        y=Y;
    }
    public int getX()
    {
        return x;
    }
    public int getY()
    {
        return y;
    }
    public Object clone()
    {
        Point obj=null;
        try
        {
            obj =(Point)super.clone();
        }
        catch (CloneNotSupportedException e)
        {
            e.printStackTrace();
        }
        return obj;
    }
}

public class Circle extends Point implements Cloneable
{
    private int r;
    public Circle()
    {
    }
    public void setR(int R)
    {
        r=R;
    }
    public int getR()
    {
        return r;
    }
    public Object clone()
    {
        Circle o=null;
        try
        {
            o =(Circle)super.clone();
        }
        catch (CloneNotSupportedException e)
        {
            e.printStackTrace();
        }
        return o;
    }
}
  Point类编译成功,但Circle类失败了,显示:
在相应的try语句主体中不能抛出异常  java.lang.CloneNotSuppotedException
搜索更多相关的解决方案: void  测试  private  public  return  

----------------解决方案--------------------------------------------------------
因为你定Circle类继承了Point类,并且在Point类中你重写了吗clone方法,并且在该方法中抛出的异常你已经进行了处理,所以在Circle中不需再对异常出处理,因为一旦产生异常,就会在其父类中的clone方法中处理,就不会再抛出异常。所以只要把Circle中定义的clone中的异常处理器去掉就行了。
希望你能理解
----------------解决方案--------------------------------------------------------
  相关解决方案