Tengo varias clases Parent
y Child1
... Child9
implementado en Java. Parent
es una clase abstracta, que contiene todas las variables comunes de las clases secundarias (muchas, que es la razón principal por la que hice Parent
una clase abstracta y no una interfaz), algunos métodos abstractos y algunos implementados.
Algunas de las clases secundarias tienen métodos personalizados que son específicos para ellos. Muy a menudo me encuentro llamando a un método hijo usando downcasting:
Parent p = new Child1();
((Child1) p).child1SpecificMethod();
De alguna manera tengo la sensación de que esta es una mala práctica de OOD, pero no estoy muy seguro de si ese es realmente el caso, respectivamente, de cómo mejorar el diseño.
- Editar: lo que probablemente debería cambiar de todos modos es el hecho de que uso la clase Parent para organizar muchas (por ahora) variables comunes, haciéndolas (o un objeto contenedor) miembros de las clases concretas.
p
como un Parent
en primer lugar? Cumplir con los tipos generales es una buena práctica para las API y los tipos de retorno, pero no dentro del mismo ámbito en el que usted asigna una clase concreta.