【发布时间】:2018-04-28 05:24:01
【问题描述】:
我试图覆盖我的类“Employee”中的克隆方法,当调用 super.clone() 时,它给出了异常,但当我实现“可克隆”时,相同的代码工作。我的问题是,每个类都有基类“对象”。但是当我们调用 super.clone() 时它会失败并且在实现可克隆时它会起作用。为什么会这样?
不应该使用子类中的“super”来访问基类方法吗?为什么会抛出运行时异常?
public class Employee {
//explicit Employee extends Object didn't worked.
String name;
Integer id;
public Employee(String name, Integer id) {
this.name = name;
this.id = id;
}
@Override
protected Object clone() throws CloneNotSupportedException {
return super.clone();
}
}
【问题讨论】:
-
提示:我们如何知道 Employee 可以被克隆?
-
这就是语言的设计方式。如果语言设计者要回答你的问题,那对你有什么帮助?这就像问一个特定的关键字为什么具有特定的含义……之所以如此,是因为它是这样定义的。
-
如果Obejct类没有按照文档实现clone()方法,那么Employee类中的'suer.clone()'是什么意思?