class Main
{
public static void main(String[] args)
{
new Cloned().clone();
}
}
class Cloned implements Cloneable {}
这会给出一个错误,说它受到保护。不能对象的任何子类调用该方法。
答案 0 :(得分:7)
因为clone()
是Object类
如果您希望公开访问clone()
,则需要在您的类中覆盖该方法。
@override
public Object clone()
{
return super.clone();
}
答案 1 :(得分:3)
此处的问题是Main
不会延伸Cloned
。目前,Main
可以拨打Main.clone
,但不能拨打Cloned.clone
。
在clone
中声明Object
方法这一事实并不重要。除了公共方法之外,类只能调用自己的继承方法。这包括来自其超类的受保护的,但不包括其他(超级)类的受保护方法。
答案 2 :(得分:1)
class Main implements Cloneable
{
public static void main(String[] args)
{
}
@Override
protected Object clone() throws CloneNotSupportedException {
// TODO Auto-generated method stub
return super.clone();
}
}