La razón más común para separar los conceptos en clases base y derivadas es que la clase base de alto nivel debe ser independiente de los conceptos de clases derivadas de bajo nivel. De esta manera, cuando hay una clase base mencionando el nombre de una de sus derivadas, significa que probablemente alguna cosa se elaboró de forma equivocada. Por lo general, la clase base no debe tener ningún conocimiento sobre sus derivadas.
De igual manera para las funciones. Una función base (de alto nivel) no debe depender de sus funciones derivadas (de bajo nivel).
Hay algunas excepciones para esta regla, por ejemplo, cuando se implementa el concepto de máquina de estado, donde el número de clases derivadas es fijo y la clase base está encargada de hacer la selección entre las derivadas.