Tenho várias classes Parent
e Child1
... Child9
implementado 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 Parent
uma 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.
p
como um Parent
em 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.