首页 > 试题广场 >

如果一个对象仅仅声明实现了cloneable接口,但是不声明

[单选题]

如果一个对象仅仅声明实现了cloneable接口,但是不声明clone方法,外部能够调用其clone方法吗?()

  • 不能
  • 不确定
测试证明是不可以的。
Object中的clone()方法是protected的,也就是说除了子类和同包的,是not visible的。
在实现了Cloneable的类内部是可以调用的,别的类不可以。

补充:想着应该是可以调用的,每个类都是Object的子类。
可是如果不声明clone方法的话,调用就会提示The method clone() from the type Object is not visible,求解!
编辑于 2017-02-25 10:51:16 回复(1)
能的。因为cloneable接口只是标记接口,接口里并没有定义任何内容。clone()方法是在Object里定义的, Object是所有类的父类,所有可以调用,不一定要重新声明。
方法签名:  protected native Object clone() throws CloneNotSupportedException;
native  说明是油jvm提供的实现,相当于内存数据复制。但要注意这个是浅克隆。
发表于 2017-02-23 10:58:57 回复(0)
发表于 2017-02-23 00:03:13 回复(0)