Promover objeto de classe

3 respostas
E

Olá,

Não sei se alguém já precisou disso, mas eu gostaria de saber se alguém sabe como posso “promover” um objeto de uma classe para outra classe que herde essa primeira classe.

Algo assim, vamos ao típico exemplo de PF/PJ e Pessoa.

PF e PJ herdam Pessoa, se eu tenho um objeto pessoa da classe Pessoa, como eu posso dizer “a partir de agora, você é PF” sem ter que instanciar outro objeto e copiar as propriedades?

3 Respostas

mausexdd

Acho que não tem como não , se tiver tbm quero saber!

A

Automaticamente não dá.

Note que há (provavelmente) atributos em PF ou PJ que não existem em Pessoa.
Como seriam preenchidos esses atributos?

O que recomendo fazer, é criar uma espécie de construtor de cópia nas suas classes:

class Pessoa {
  Pessoa(Pessoa outraPessoa) {...}
}

class PessoaFisica extends Pessoa {
  PessoaFisica(Pessoa outraPessoa) { 
    super(outraPessoa); 
    //aqui você termina de inicializar pessoa física
  }
}
dwduncan

Promover sim, através de coerção, claro que ambos os objetos precisam estar na mesma árvore de herança. Além disso, existe o padrão Adapter do (Design Pattern) Padrões de Projetos. Cuidado, seja claro no seu projeto para que ele não perca a coesão. Como Java é uma linguagem tipificada, é meio “anti-natural” para essa linguagem mudanças de tipos, a menos que vc use polimorfismo.

Criado 31 de outubro de 2011
Ultima resposta 31 de out. de 2011
Respostas 3
Participantes 4