有疑问请澄清我 让我解释 有2个班级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()
方法
答案 0 :(得分:5)
clone()
方法受到保护。由于您的主要属于类A
的一部分,因此它允许在A
类型的对象上调用受保护的方法,因此a.clone()
将正常工作。
b.clone()
失败,clone
受到保护,因此在B
课程之外无法使用,除非B
公开覆盖{。}}。
Here是关于clone
方法的Javadoc。