关于调用clone()方法的问题

qq_31134691 2015-10-08 07:00:42
代码如下:
----------------------------------------------------------------------------------------------
class Person2 implements Cloneable {
private String name=null;

public Person2(String name) {
this.name=name;
}

public void setName(String name) {
this.name=name;
}

public String getName() {
return this.name;
}

public Object clone() throws CloneNotSupportedException {
return super.clone(); //clone()不是不可视么?为什么这里却可以成功调用?
}

public String toString() {
return "姓名: "+this.getName();
}
}

public class Test8 {
public static void main(String[] args) throws Exception{
Person2 p1=new Person2("张三");
Person2 p2=(Person2)p1.clone();

//我试着写了这些代码:
//String str1="good";
//String str2=(String)str1.clone();
//却被告知clone()不可视,因此引出上面问题

p2.setName("李四");
System.out.println("原始对象: "+p1);
System.out.println("克隆之后的对象: "+p2);
}
}
...全文
160 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_31134691 2015-10-14
  • 打赏
  • 举报
回复
再顶下,再顶下
qq_31134691 2015-10-10
  • 打赏
  • 举报
回复
还是不明白呀,求各位帮下忙
qq_31134691 2015-10-09
  • 打赏
  • 举报
回复
除了String类,好像其他类也不可以随便调用clone()方法呢?
飏飏一蝶 2015-10-08
  • 打赏
  • 举报
回复
父类Object的clone()是protected的 对其子类当然可视并可以调用 你自己写的clone()是扩大了权限的Override 而String比较特殊,没有重写clone(),好像只能进行浅复制吧 也不能直接在外部调用方法 你把String看成和基本变量一类就可以

50,639

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧