首页 新闻 搜索 专区 学院

Object中的clone方法,为什么子类不能访问?

0
悬赏园豆:10 [已解决问题] 解决于 2016-11-23 13:58

java中自己定义的类,如定义了一个User类,User类中,为什么没有clone方法,clone方法不是protected修饰的吗?protected修饰的方法不是:自己、同一个包的类、子类都可以访问吗?为什么Object中的clone方法,User不能访问呢?!

yorick的主页 yorick | 初学一级 | 园豆:193
提问于:2016-11-22 22:54
< >
分享
最佳答案
0

super.clone啊。但你本身要实现Cloneable才行

收获园豆:10
Daniel Cai | 专家六级 |园豆:10424 | 2016-11-23 09:47

知道可以使用super.clone,提的问题是: User类从Object继承,且Object的clone方法的访问修饰是: protected,User类的对象为什么不能调用 Object 的 clone 方法

yorick | 园豆:193 (初学一级) | 2016-11-23 12:28

意思没表述清楚,User类为什么没有继承Object类中修饰符为protected的clone方法

yorick | 园豆:193 (初学一级) | 2016-11-23 12:54

@yorick: 继承了啊,为什么你会认为没有继承?

class x implements Cloneable

{

  public void dummy(){

    this.clone();

  } 

}

Daniel Cai | 园豆:10424 (专家六级) | 2016-11-23 13:29

@Daniel Cai: 如果 x 不实现 Cloneable 接口,clone 方法不能调用

yorick | 园豆:193 (初学一级) | 2016-11-23 13:49

@yorick: 规则就是如此

* @exception CloneNotSupportedException if the object's class does not
* support the {@code Cloneable} interface. Subclasses
* that override the {@code clone} method can also
* throw this exception to indicate that an instance cannot
* be cloned.

 

而且这也不代表没有继承,子类同样可以在没有实现这个接口的情况下去进行调用

Daniel Cai | 园豆:10424 (专家六级) | 2016-11-23 13:52

@Daniel Cai: 好的,👌

yorick | 园豆:193 (初学一级) | 2016-11-23 13:57

@Daniel Cai: 谢啦

yorick | 园豆:193 (初学一级) | 2016-11-23 13:58
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册