有疑问,请澄清我,让我解释一下,A班和B班
public class A implements Cloneable{
public static void main(String[] args) {
A a1 = new A();
try {
A a2 = (A) a1.clone();//works fine
} catch (CloneNotSupportedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
B b1 = new B();
B b2 = (B) b1.clone();//cannot get this method
}
}
class B implements Cloneable {
}当我编译这段代码时,出现了以下错误
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
The method clone() from the type Object is not visible我知道这两个类都扩展了Java.lang.Object类,请解释为什么class B不能获得clone()方法
发布于 2014-12-11 10:32:33
clone()方法受到保护。由于主对象是类A的一部分,它允许对A类型的对象调用受保护的方法,因此a.clone()将正常工作。
b.clone()失败,因为clone受到保护,因此在B类之外不可用,除非B将公开重写它。
Here是关于clone方法的Javadoc。
https://stackoverflow.com/questions/27420602
复制相似问题