复制具有自己的变量的子类的构造函数

5 java inheritance copy-constructor

我有一个名为CDAccount的子类,它有自己的变量,这些变量没有在超类中定义.

private Calendar maturityDate;
private int termOfCD;
Run Code Online (Sandbox Code Playgroud)

子类还有一个复制构造函数,它接受一个超类对象.

public CDAccount(Account cd){
    super(cd);
}
Run Code Online (Sandbox Code Playgroud)

这个构造函数由这行代码调用,它位于不同的类中.

if (accounts.get(index).getType().equals("CD")) {
return new CDAccount(accounts.get(index));
}
Run Code Online (Sandbox Code Playgroud)

我正在寻找一种在复制构造函数中设置子类变量的方法.我以为我能够用它所接受的对象来做它,因为我在将对象设置为超类对象数组之前将其创建为子类对象.

Bo *_*man 0

铸造应该可以满足你的需要:

public CDAccount(Account cd) {
    super(cd);
    if(cd instanceof CDAccount) {
        this.maturityDate = ((CDAccount)cd).maturityDate;
        this.termOfCD=((CDAccount)cd).termOfCD;
    }
    else {
        this.maturityDate = null;
        this.termOfCD= null;
    }
}
Run Code Online (Sandbox Code Playgroud)

这是因为 Java 中实现封装的方式:私有变量可以被同一类的其他实例访问。