Java - Dúvida: Alternativas para a herança "não múltipla"

Primeiro eu gostaria de saber como coloca o “[RESOLVIDO]” na frente do tópico, se sou eu ou a moderação. Se for a moderação por favor coloquem no seguinte tópico:

Dúvida:
Até onde sei Java não aceita multi-heranças e por isso (provavelmente) criou outras formas para compensar esse “problema”.
Ao meu ver foram as interfaces e as classes abstratas, porem tentei resolver um pequeno problema logístico aqui e não consegui.

Em um jogo temos a classe “Player” que nada mais é que a união de várias classes, interfaces, etc.
A classe Player tem funções distintas: falar, brigar e tem um sistema de atributos (hp, ataque, defesa).

Nos seguintes exemplos mostrarei, mais ou menos, como eu queria que o programa se comportasse.

Classe “atributos” para gerar informações que poderão ser calculadas posteriormente.

public class Attributes { private int health, energia; private int ataque, defesa, velocidade; //Todos os getters e setters... }
Classe para gerar saída (fala).

public class Talk { private String Text; //Todos os getters e setters... }
Classe “pessoa” com informações básicas: nome e sobrenome.

public class Person { private String nome; private String sobrenome; //Todos os getters e setters... }
Classe “luta”…

public class Fight { private int damage; private boolean isFight; //Todos os getters e setters... }
Classe que gerou o problema, a classe que deverá conter todas as informações juntas.

public class Player { /* * Deverá ser "implementado" funções que a pessoa exercerá: Lutar, falar e seus atributos... */ }

Esses são apenas exemplos de como eu gostaria de fazer uma “herança” múltipla.
Então como você acharia melhor fazer isso? Interfaces? ‘-’
Desde já agradeço.

que tal composição???

um Player possui Attributes ,Talk e Person , ai vc escapa da herança… eu pelo menos faria assim…

exemplo em codigo…

[code]public class Player {

private Attributes attr;
private Person person;
private Talk talk;

//todos getters e setters

}[/code]

Boa! Não tinha pensado nisso, estava muito focado em usar interface ou abstract. Valeu, se ninguém surgir com uma ideia “melhor” vou usar essa msm. :smiley:

Idéia melhor não vou sugerir, até porque concordo com o darklordkamui, mas para tentar entender bem o conceito de herança e composição, pergunte-se sempre se a classe é um ou tem um.

Em casos que ela é um, usa-se herança/interface sendo que, com interface ganhamos e muito em polimorfismo e podemos implementar quantas acharmos necessário, já com herança estamos sempre travados em uma única classe sendo ela abstrata ou não.

Já em casos que tem um, como no seu jogo por exemplo, além de ficar mais entendível o código, facilita a manutenção e deixa o sistema com baixo acoplamento, ou seja, amarrado com cordas de algodão e não com cabos de aço como com a herança.

Valeu! Entendi direitinho, muito obrigado! Abraço.

Moderação pode fechar o tópico. Dúvida respondida! :smiley:

[quote=VA]Valeu! Entendi direitinho, muito obrigado! Abraço.

Moderação pode fechar o tópico. Dúvida respondida! :D[/quote]

Geralmente quem abriu o tópico costuma apenas colocar um [Resolvido] junto ao título do primeiro post, basta editá-lo que o pessoal ficará sabendo.

Os tópicos não costumam ser fechados porque alguém pode ter alguma informação complementar e daí poder adicioná-la.