我很想知道:发表于:2008-03-26 13:17:076楼 得分:0 由于clone是object类的一个protected方法,代码中不能直接调用它。 上面意思是 Object o = new Object(); o.clone();//这里不能引用是因为,方法是 protected。那我下面的程序为啥可以运行呢?
public class Test { public static void main(String[] args) { A a1 = new A(); a1.testP();//引用自己类的protected方法 } } class A{ protected void testP(){ System.out.println("============="); } }
java中 Object 类本身不实现接口 Cloneable,所以在类为 Object 的对象上调用 clone 方法将会导致在运行时抛出异常。
那么 当一个类没有 extends 其它类时,是否就隐含的 extends Object 呢?
子类只能受保护的clone方法克隆他自己,为此必须重新定义clone方法,
并将其设为public,一般情况下,建议实现cloneable标记接口,并通过调用super.clone()方法
那么 当一个类没有 extends 其它类时,是否就隐含的 extends Object 呢?
//call Object.clone()
Employee cloned=(Employee)super.clone(); //clone mutable fields
cloned.hireDay=(Date)hireDay.clone(); return cloned;
}
这儿为什么是 super.clone() 而不是this.clone()?这儿不应该是employee 的克隆吗?
由于clone是object类的一个protected方法,代码中不能直接调用它。 上面意思是
Object o = new Object();
o.clone();//这里不能引用是因为,方法是 protected。那我下面的程序为啥可以运行呢?
public class Test {
public static void main(String[] args) {
A a1 = new A();
a1.testP();//引用自己类的protected方法
}
}
class A{
protected void testP(){
System.out.println("=============");
}
}