如何编写方法的行为类似于对象的克隆方法?

时间:2013-11-20 06:52:20

标签: java class oop object access-specifier

我观察到克隆是Object类的方法,Object是每个类的超类。在每个类中我都将克隆作为覆盖方法,假设我创建了一个名为A的类,如果我没有在clone覆盖class A方法,并为A创建了一个对象我没有获得克隆方法在对象中的访问权限

我在oop中缺少的概念

1 个答案:

答案 0 :(得分:2)

有两个问题:首先,clone()protected的{​​{1}}方法,因此除非您覆盖它并将其公开,否则只能从子类中调用它。其次,除非您的类实现Object,否则调用Cloneable会抛出clone()。典型的方法是:

CloneNotSupportedException

(你可以删除try / catch块并声明你的class A implements Cloneable { public Object clone() { try { return super.clone(); } catch (CloneNotSupportedException e) { throw new RuntimeException("Impossible exception!", e); } } } 方法抛出clone()。方法会更简单,但所有调用代码都必须处理异常。)

由于Java允许您在覆盖方法时缩小返回类型,因此可以重新定义CloneNotSupportedException以返回clone(),从而保存调用代码不必转换:

A