class Main {
public static void main(String[] args) {
new Cloned().clone();
}
}
class Cloned implements Cloneable {
}
这给出了一个错误,说它是受保护的。object 的任何子类都不能调用该方法。
class Main {
public static void main(String[] args) {
new Cloned().clone();
}
}
class Cloned implements Cloneable {
}
这给出了一个错误,说它是受保护的。object 的任何子类都不能调用该方法。
因为clone()
是 Object 类中的受保护方法
如果您想clone()
公开访问,您需要在您的课程中覆盖该方法。
@override
public Object clone()
{
return super.clone();
}
这里的问题是Main
不扩展Cloned
。就目前而言,Main
可以调用Main.clone
,但不能调用Cloned.clone
。
clone
声明方法的事实在Object
这里并不重要。除了公共方法,一个类只能调用自己继承的方法。这包括来自其超类的受保护方法,但不包括其他(超)类的受保护方法。
class Main implements Cloneable {
public static void main(String[] args) {
}
@Override
protected Object clone() throws CloneNotSupportedException {
//TODO Auto-generated method stub
return super.clone();
}
}