Ir ao conteúdo

Implementação de Herança


Ir à solução Resolvido por Simon Viegas,

Posts recomendados

Postado

Olá, tenho uma superclasse animal com n atributos e uma subclasse peixe com os mesmos atributos, mas valores específicos. Daí não sei aonde eu declaro esses valores.... 

 

Os atributos estão na super como private. Devo acessar na sub por um setter ou trocar pra protected? Se eu criar um setter terei que chamá-lo sempre, não queria isso. Então como eu faço pra ficar "default" na sub??

    Peixe(){}    public Peixe(String nome, String cor, String ambiente, float velocidade,                                             int comprimento, int patas) {            super(nome, cor = "cinza", ambiente = "mar", velocidade, comprimento, patas);          //ou this.cor = "cinza";??????   }   private final boolean barbatanas = true;   private final boolean cauda = true;
  • Membro VIP
  • Solução
Postado

Olá.

 

Creio que usar private ou não é uma questão de padrão de projeto. Se você precisa encapsular, vai usar private mesmo e acessar via getter e setter... senão, usa da forma que ficou acordado.

 

Eu não lembro como seria, mas acho que pode ser algo como super.getNomeDoAtributo() ou super().getNomeDoAtributo(). Não sei dizer se funciona da um getNomeDoAtributo() direto na subclasse.. Testa ai...

 

Outra coisa, usar um constrututor ou não, também depende da sua proposta... você pode criar diretamente pelo super mesmo, passando os parâmetros, ou pelos setters... como você já tem todos os dados, seria mais sensato pelo construtor...

 

No aguardo.

Postado

 

Eu não lembro como seria, mas acho que pode ser algo como super.getNomeDoAtributo() ou super().getNomeDoAtributo(). Não sei dizer se funciona da um getNomeDoAtributo() direto na subclasse.. Testa ai...

 

Outra coisa, usar um constrututor ou não, também depende da sua proposta... você pode criar diretamente pelo super mesmo, passando os parâmetros, ou pelos setters... como você já tem todos os dados, seria mais sensato pelo construtor...

 

Sim, você pode usar diretamente getNomeDoAtributo() na classe filha que funciona normalmente.

Porém, com relação aos contrutores, dependendo da quantidade de parâmetros, não é uma boa prática ... Caso você consiga, recomendo ler o Livro "Effective Java" ("Java Efetivo" na versão traduzida), que vai ajudar e muito a melhorar a forma de programar ... (to recomendando porque eu o li esses dias e mudou e muito minha forma de analisar e resolver os algoritmos)

Postado

Então, funciona se eu chamar o setNome dentro da subclasse do construtor.

 

Obrigada, Simon Viegas e psykotico.

 

 

Quero começar o Effective Java assim que esse período terminar....

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!