Método de llamada que existe en las clases secundarias pero no en la clase principal
public class Parent {
....
}
public class Child1 extends Parent {
....
public void foo() {
....
}
}
public class Child2 extends Parent {
....
public void foo() {
....
}
}
Aquí métodofoo()
solo existe en las clases Child y NO PUEDE agregarse a la clase Parent (ni siquiera el método abstracto). En esta situación cuando quiero llamar alfoo()
método enobj
cual esParent
referencia de la clase, entonces necesito usarintanceof
con múltiplesif..else
que quiero evitar
Parent obj = ...// Object of one of the child classes
obj.foo();
EDITAR: Necesito usar el tipo deobj
comoParent
solamente. De lo contrario, no podré llamar a los métodos en obj que existen en la clase Parent.
Mi solución: El enfoque que estoy pensando es definir una interfaz decirFooInterface
confoo()
y dejar que todas las clases secundarias lo implementen, entonces podría escribir castobj
a esa interfaz y llame al método foo () de esta manera:
if(obj instanceof FooInterface){
((FooInterface)obj).foo();
}
¿Hay un mejor enfoque? ¿O alguna mejora a esta?