克隆已实现的抽象方法

Cloning an implemented abstract method

我是Java的初学者,想请教一个问题:

是否可以克隆实现的抽象方法体?

示例:

public abstract class ClassA{
  public abstract void method();
}

ClassA objA = new ClassA(){
  public void method(){
    System.out.println("Yay");
  }
}

//creating objB with the same method as in objA

objB.method();
Output: Yay

你必须定义抽象的实现 class ClassA:

public class ClassAImpl extends ClassA {
    @Override
    public void method() {
        System.out.println("Yay");
    }
}

然后您可以创建实例 objAobjB:

public class ExampleClass {
    public static void main(String[] args) {
        ClassAImpl objA = new ClassAImpl();
        objA.method();
        ClassAImpl objB = new ClassAImpl();
        objB.method();
    }
}

输出:

Yay
Yay

是的,你可以。

只需将 Cloneable 接口实现到 ClassA class。

public abstract class ClassA implements Cloneable {
    public abstract void method();
    @Override
    public ClassA clone() {
        try {
            return (ClassA) super.clone();
        } catch (CloneNotSupportedException e) {
            throw new RuntimeException(e);
        }
    }
}

那你可以这样做了。

ClassA objB = objA.clone();
objB.method();

试试这个:

        ClassA objB = objA.getClass().newInstance();
        objB.method();

无需克隆。