Vale lembrar que a criação de classes por meio de herança é muito útil quando as subclasses compartilham a implementação de métodos e atributos da classe pai. Conforme já vimos, podíamos criar uma classe Forma e derivar diversas subclasses como Retângulo, Quadrado e Círculo.
Entretanto, se prestarmos mais atenção ao código que escrevemos, podemos verificar que a classe Forma não acrescenta muito nas demais classes, visto que existem diversas formas diferentes (oval, circulo, retângulo, quadrado etc.) e cada uma tem métodos muito particulares e atributos diferentes. Assim pudemos perceber que não se ganhou muito com a herança da classe Forma, pois não houve praticamente nenhum reaproveitamento de atributos e da implementação de métodos. O que fizemos foi usar apenas as assinaturas dos métodos da classe forma e tivemos que sobrescrevê-los.