Dúvida sobre Herança!

6 respostas
rdantas

Bom dia a todos,

Estou implementando uma superclasse que vai ter vários herdeiros. Dentro desta superclasse eu tenho um método que não existirá nos herdeiros, mas porém, todos eles vão chamá-lo.

Ex.:

class Pai{

    protected void filtrar(){
        //quero saber quem foi o herdeiro que chamou este metodo
    }
}
class Herdeiro extends Pai{

    public void consultar(Object object){
           filtrar();
           ////outros comandos aqui
    }
}

Em um primeiro momento eu pensei em criar um flag na classe Pai que eu usasse como indicador do filho que o instanciou (através do super()), mas não achei que isso seria muito legal. Alguém sabe se algum recurso, ou forma para saber quem está invocando o método?

Grato pela atenção,

Rodrigo

6 Respostas

pintofree

acho q a melhor forma e criar uma tabela de log, no banco de dados e gravar cada classe q acessa o metodo. ai vc inclui um parametro na classe q sera o nome q quem esta acessando o metodo. ai e so gravar a hora do aceso e quem acessou.

T

Passe o próprio objeto como parâmetro.

Exemplo:

class Pai{

    protected void filtrar(Pai herdeiro){
        //quero saber quem foi o herdeiro que chamou este metodo
    }
}
class Herdeiro extends Pai{

    public void consultar(Object object){
           filtrar(this);
           ////outros comandos aqui
    }
}
nbluis

Acho que algo do tipo ficaria melhor…

Pai:

protected void filtrar(Pai pai) {
  //codigo
}

Filho:

public void consultar(Object object){  
  filtrar(this);
}
pintofree

acho q confundi as coisas, vc quer saber quem esta acessando o metodo para poder trabalhar com ele, ou para ter um controle de acessos na sua classe?

rdantas
boa idéia, não tinha pensado nisso. Daí é só eu comparar com o .Class do hedeiro. Vou testar aqui e qq coisa eu posto de novo.

Obrigaduuuuuuuuuuuuuuuuuuuuu.

rdantas

era só saber chamou o método mesmo. Mas valew assim mesmo.

Criado 14 de fevereiro de 2008
Ultima resposta 14 de fev. de 2008
Respostas 6
Participantes 4