Tipo é uma dúvida meio cruel…
public class Caracteristica {
private String descricao;
//Outras propriedades...
public void setDescricao(String descricao){
this.descricao = descricao;
}
public String getDescricao(){
return descricao;
}
//Vários outros getters e setters...
}
public class Pessoa extends Caracteristica {
// e vários outros métodos
}
ou
public interface Caracteristica {
public String getDescricao();
public void setDescricao(String descricao);
}
public class Pessoa implements Caracteristica {
private String descricao;
//implementa os métodos da interface...
}
Em questão de polimorfismo na sua opnião qual seria melhor???
Obrigado desde já!!!
Não há uma resposta definitiva para uma decisão entre interface ou herança, cada caso é um caso. No seu exemplo, como parece se tratar de um JavaBean bastante simples, não vejo problemas em usar herança. Mas, se a superclasse tivesse métodos um pouco mais complexos que chamassem outros métodos dentro da mesma classe, e esses outros métodos fossem redefinidos na subclasse, o comportamento da subclasse poderia ser diferente do que você esperava em determinadas situações. Quando a redefinição de métodos traz efeitos colaterais indesejados, usar interface e delegação costuma ser uma saída sensata.
Nesse caso a interface é mais adequada, pois a Pessoa “implementa um comportamento” de Caracteristica, a Pessoa não “É” uma Característica.
Veja mais nesse tópico: http://www.guj.com.br/java/244222-simulao-de-heran-multipla-como-fazer
[quote=gomesrod]Nesse caso a interface é mais adequada, pois a Pessoa “implementa um comportamento” de Caracteristica, a Pessoa não “É” uma Característica.
Veja mais nesse tópico: http://www.guj.com.br/java/244222-simulao-de-heran-multipla-como-fazer[/quote]
Também tavo pensando dessa maneira… =) Obrigado… alguém tem mais opniões???