Tenho várias classes Parente Child1... Child9implementado em Java. Parenté uma classe abstrata, contendo todas as variáveis comuns das classes filho (muito, que é a principal razão pela qual eu criei Parentuma classe abstrata e não uma interface), alguns métodos abstratos e alguns implementados.
Algumas das classes filho têm métodos personalizados que são específicos para eles. Muitas vezes, me pego chamando um método filho usando downcasting:
Parent p = new Child1();
((Child1) p).child1SpecificMethod();
De alguma forma, tenho a sensação de que essa é uma prática ruim de OOD, mas não tenho certeza se esse é realmente o caso, respectivamente, de como melhorar o design.
- Editar - O que eu provavelmente deveria mudar de qualquer maneira é o fato de usar a classe Parent para organizar muitas (por enquanto) variáveis comuns, tornando-as (ou um objeto de contêiner) membros das classes concretas.
pcomo um Parentem primeiro lugar? A adesão a tipos gerais é uma boa prática para APIs e tipos de retorno, mas não dentro do mesmo escopo em que você aloca uma classe concreta.