Herança - Classe Pai ter acesso aos métodos das Filhas?

5 respostas Resolvido
java
B

Galera queria saber se é possível uma classe Pai ter acesso aos métodos das classes filhas?
Vlw

5 Respostas

E
Solucao aceita

Com Herança em Java o acesso é feito apenas de baixo para cima.

Leia sobre: [Resolvido] Pegar um metodo da subclasse

Ai você encontra uma saída.

S

Se o modificador de acesso dos métodos das classes filhas permitir, sim.
Mas não é uma boa prática você ter uma classe que referencie subclasses dela mesma.

O que exatamente você quer fazer?

Existe um padrão de projeto chamado template method onde a classe base é abstrata, define alguns métodos abstratos e faz chamada a estes métodos. Como a implementação destes métodos estará em uma subclasse concreta, pode-se dizer que a classe pai está invocando um método da classe filha.

B

Existe um padrão de projeto chamado template method onde a classe base é abstrata, define alguns métodos abstratos e faz chamada a estes métodos. Como a implementação destes métodos estará em uma subclasse concreta, pode-se dizer que a classe pai está invocando um método da classe filha.

Pode me dar um exemplo?

B

Entendi, vi alguns exemplos anteriores de uma classe Pai instanciando a Filha, mas não conseguir entender qual o real propósito de se fazer isso pois a classe Pai não tem acesso aos atributos e nem métodos da filha.

Ex: Pai p = new Filha();

Qual seria o propósito de se fazer isso?

R

Neste caso é possível declarar um objeto de tipo diferente da variável desde que o objeto atenda a regra do IS-A. Filha IS-A Pai? (IS-A = herança ou implementação). Se sim, é possível que a variável seja uma superclasse ou interface e o objeto seja uma subclasse ou uma implementação da interface.

Ainda nesse raciocínio, o cenário de Filha f = new Pai() já daria erro, pois não herda ou implementa um filho.

É importante ficar ligado para métodos e variáveis sobrescritos nesta situação, pois o resultado em tempo de compilação/execução pode ser diferente.

Criado 17 de outubro de 2017
Ultima resposta 17 de out. de 2017
Respostas 5
Participantes 4