1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Entendendo Herança X Composição

Tenho visto em diversos sites e materiais que a composição deve ser mais usada que a herança, porque a composição facilita na aplicação de padrões de projeto, manutenibilidade, e favorece os principios de O.O.

Só fiquei com uma dúvida, esse conceito quer dizer que eu devo fazer isso:

Exemplo 1:

public class Pessoa{
  private String nome;
  private String endereco;

  //getters e setters
}

public class PessoaFisica{
  private Pessoa pessoa;
  private String cpf;

  //getters e setters
}

ao invés de usar isso?

Exemplo 2:

public class Pessoa{
  private String nome;
  private String endereco;

  //getters e setters
}

public class PessoaFisica extends Pessoa{
  private String cpf;

  //getters e setters
}

Ou em um caso desse é melhor usar herança mesmo?

  • Boa pergunta, amigo

    Eduardo Maia   04 de set de 2015
  • Realmente, é uma ótima pergunta.

    sinkz   04 de set de 2015
  • Dá uma lida neste tópico aberto em outro fórum, pois acho que responde sua pergunta.

    electus   04 de set de 2015
  • electus, o tópico que você passou é sensacional, novamente vejo o principio que devemos usar mais composição, fiquei mais tendencioso a acreditar que o exemplo 1 é mais correto, para você electus, qual das duas formas você acha mais correta?

    Douglas   04 de set de 2015
  • Outra pergunta, no caso de se usar JPA, será que isso vai atrapalhar? Por exemplo, em algum momento eu querer listar pessoas, e em uma outra situação querer listar Funcionarios, supondo que Funcionario fosse composto por uma pessoa

    Douglas   04 de set de 2015
Mostrar todos os 8 comentários>
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

1 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags java design-patterns ou faça a sua própria pergunta.