Chamando o método que existe nas classes filho, mas não na classe pai
public class Parent {
....
}
public class Child1 extends Parent {
....
public void foo() {
....
}
}
public class Child2 extends Parent {
....
public void foo() {
....
}
}
Aqui métodofoo()
existe apenas nas classes filho e NÃO PODE ser adicionado à classe pai (nem mesmo ao método abstrato). Nesta situação, quando eu quero chamar ofoo()
método emobj
qual éParent
referência da classe, então eu preciso usarintanceof
com múltiplosif..else
o que eu quero evitar.
Parent obj = ...// Object of one of the child classes
obj.foo();
EDITAR: Eu preciso usar o tipo deobj
ComoParent
só. Senão, não poderei chamar métodos em obj que existem na classe Parent.
Minha solução: A abordagem que estou pensando é definir uma interface, digamosFooInterface
comfoo()
método e deixar todas as classes filho implementá-lo, então eu poderia apenas digitar cast oobj
para essa interface e chame o método foo () como este:
if(obj instanceof FooInterface){
((FooInterface)obj).foo();
}
Existe uma abordagem melhor ? Ou alguma melhoria para este?