Herança

3 respostas
EltonJr

Olá, estou fazendo um projeto de uma disciplina na faculdade, e preciso de uma ajuda, pois não mando muito bem em Herança.

Tenho uma classe pai X, e três classes filhas X1, X2 e X3.
A classe X não possui variáveis, só métodos.
E todas as classes filhas tem nelas um objeto Hash.
Posso eu ter um método na classe pai que utilize o hash da filha, para que eu não precise implementar o método em todas as classes filhas?

Qual a melhor maneira de fazer isso? Por uma classe pai abstrata? Também não sei usar direito.

Desde já, agradeço.
Abraço.

3 Respostas

P

Depende… se as filhas forem bonitas tudo eh possivel :smiley:

robertol

Você não conseguirá visualizar o objeto Hash na classe pai a menos que este objeto esteja declarado nela.
Se você o utiliza em todas as classes filhas, o correto é declará-lo dentro do escopo da classe pai.

Se não conseguir implementar, posta seu código para podermos te ajudar com mais clareza!

:wink:

discorpio

Boa tarde a todos.

O mais certo é voce declarar o objeto hash como atributo privado na classe pai e encapsulá-lo com os métodos públicos getter e setter, tudo isto na classe pai, evidentemente.

Outra dica para voce evitar de se criar várias referências desse objeto hash, bem como de evitar o famoso “Null Pointer”, no método getter desse objeto, sempre instancie ele primeiro para depois retorná-lo, assim:

public class X {

   private HashMap meuhash;

   public HashMap getMeuhash(){
         if (meuhash == null) meuhash = new HashMap();
         return meuhash;
   }

   public void setMeuhash(HashMap meuhash) {
        this.meuhash = meuhash;
   }

}

Desta forma voce pode usar despreocupado o método getMeuhash() da classe pai, nas classes filhas, inclusive desta forma a utilizar os métodos do objeto hash encadeados, assim:

public class X1 extends X {

        public X1() {
             getMeuhash().put("Valor String", Valor Objeto);
             getMeuhash().put("Valor String", Valor Objeto);
             ......
        }

   }
Criado 15 de dezembro de 2010
Ultima resposta 16 de dez. de 2010
Respostas 3
Participantes 4