/ / como copiar o objeto SubClass no construtor de cópia BaseClass - java, herança, construtor de cópia

como copiar o objeto SubClass no construtor de cópia BaseClass - java, herança, copy-constructor

Eu gostaria de fazer uma cópia do objeto SubClass no construtor BaseClass. Eu preciso que o código a seguir seja executado corretamente.

class BaseClass{
BaseClass() {}
BaseClass(BaseClass base) {
//TODO: how to implement?
}
}

class SubClass extends BaseClass {
SubClass() {}
}

public class Test {
public static void main(String[] args) {

BaseClass sub = new SubClass();
BaseClass subCopy = new BaseClass(sub);
if (subCopy instanceof SubClass) {
// need to be true
}
}
}

Isso é possível? Se sim, como posso fazer isso? Senão, como posso obter um efeito semelhante?

Respostas:

3 para resposta № 1

Não é possível. Um construtor da classe A fornece uma instância de A, não há como contornar isso. Por que não instanciar a subclasse explicitamente?

Outra possibilidade pode envolver um método estático de fábrica, como:

public static BaseClass create(BaseClass input) {
// return BaseClass or subclass
}

1 para resposta № 2

Parece que você quer o objeto de BaseClass ser uma instância de SubClass que se estende BaseClass.

É mesmo possível?

-Não. Não é possível.

o instanceof operador retorna true se a variável do lado esquerdo satisfizer É UM condição da variável ou classe no lado esquerdo.

o SubClass É UM BaseClass desde que se estende BaseClass. Mas o BaseClass nunca pode ser um SubClass, já que não pode se estender SubClass.


0 para resposta № 3

Você parece ter um design de cabeça para baixo. Se você precisar fazer o que está pedindo, precisará repensar o seu design. Idealmente em seu construtor de subclasse, você deve copiar ou inicializar as propriedades da classe base chamando super ().