首页 > 解决方案 > 如果子类扩展抽象类,克隆方法的语法是什么?

问题描述

例如,A 类实现了可克隆,它是一个抽象类,B类扩展了 A 类

假设我只需要B 类中的 clone 方法。我还需要使用吗

A result = (A)super.clone();

clone方法中?

标签: javaclone

解决方案


不,您可以将其实现clone()B

public B clone() {
    try {
        return (B) super.clone();
    } catch (CloneNotSupportedException e) {
        throw new IllegalStateException(e);
    }
}

注意:该clone()方法未在Cloneable接口中定义。Cloneable只是一个所谓的“标记”界面。所以A根本不需要clone()方法。

(您也可以将该方法声明为抛出 CNSE 并让调用者处理它。还要注意,clone()这些Cloneable天有点不受欢迎。考虑简单地提供一个复制构造函数,而不是采用 aB并复制其字段的值。)


推荐阅读