Olá pessoal, tenho uma classe Pai chamada TotemType e suas classes Filhas, como, por exemplo: ArmorTotem. Na classe ArmorTotem encontra-se um método chamado getPowerGui(); queria acessar ele através da classe Pai. Eu estou usando o Generics para pegar o tipo do Totem, vou mostrar abaixo:
Método getType que retorna a classe Filha de forma correta:
Se essa classe pai for abstrata, vc pode criar um método abstrato nela e acessa-lo diretamente, pois isso fará que todas as classes que herdam dela implementem esse método (cuidado: isso vai criar um forte acoplamento com as classes que herdarem dessa classe).
Outra solução seria utilizar uma interface e fazer as classes filhas que precisarem ter esse método (getPowerGui()) implementa-la. Com isso, vc pode verificar se o objeto é do tipo dessa interface e chamar o método diretamente.
V
vitorvd
Usando a 1º solução: Teria que criar um getType() na classe abstrata pai(sim, desdo começo ela é uma class abstrata) mas aí o retorno dela teria de ser obrigatoriamente a da classe filha e ficaria inviável.
Colocando em código:
// resto dos métodos abstratos
public abstract ArmorTotem getType();
@Edit - 9h17:
O que pensei foi na classe abstrata Pai criar um método envolvendo Generic:
Na declaração da Class: public class TotemType e retornar T no método getType, daria certo? Mas acho que ainda precisaria verificar com o “instanceof”
Lucas_Camara
Nessa parte, totem é uma instância de uma das classes filhas de TotemType? E como é esse método getTotemType() ?
A princípio, acho que uma boa solução seria envolver o uso de interfaces mesmo.
V
vitorvd
O Objeto Totem representa cada um criado, e o TotemType fica dentro deste Objeto para eu conseguir pegar as informações de cada tipo. O método getTotemType retorna o Objeto TotemType que está dentro do Objeto Totem.
Na parada da Interface, creio que entendi. Seria transformar a classe TotemType em uma interface(atualmente é uma classe abstrata) e reescrever na classe filha tal método. Certo?!
Villagram
boa tarde, passando para deixar um exemplo do que eu acho que vc está precisando: