昏黄烛火轻摇晃 2017-07-15 14:46 采纳率: 61.5%
浏览 3295
已采纳

JAVA 所有类都是Object的子类 ,那么子类的对象为什么不能直接调用Clone()方法

虽然是Clone()在Object里面是protected权限,即使Person类是和Object不同包,但是protected定义的不同包的子类也可以继承父类的方法啊?
class Person implements Cloneable
{
private String name ;
private int age ;
public Person(String name,int age){
this.name = name ;
this.age = age ;
}
public String toString(){
return "姓名:"+this.name+",年龄:"+this.age ;
}
public Object clone() throws CloneNotSupportedException{
return super.clone() ;
}
}
public class TestDemo
{
public static void main(String args[]) throws Exception
{
Person p1 = new Person("张三",30) ;
Person p2 = (Person)p1.clone() ;
p2.name = "李四" ;
System.out.println(p1) ;
System.out.println(p2) ;
}
}

  • 写回答

5条回答 默认 最新

  • threenewbee 2017-07-16 02:14
    关注

    Clone必须交给实现这个类的程序员去实现。否则从逻辑上说,别人很难写出真正的Clone方法。看这个代码
    class A
    {
    public A a;
    public A()
    {
    a = this;
    }
    }
    这样的代码如果自动克隆,就会无限递归。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?