Un consejo deseo había sido dado a mí hace mucho tiempo es:
No se exceda en el uso herencia.
Este es un escollo realmente fácil para un principiante (imho) ya que es uno de los grandes conceptos en OOP del que todos hablan.
Básicamente, debe usar la herencia solo donde realmente tiene sentido - piense en tipos de datos, algunas jerarquías de widgets, cosas donde la relación es tan obvia que cualquiera la hubiera usado. De lo contrario, deberías estar inyectando objetos en otros y llamándolos para cambiar la funcionalidad (composición).
No se sienta tentado a definir una carga de métodos abstractos y anular varias veces para implementarlos de manera diferente cuando podría tener una sola clase e inyectar (argumento al constructor) un objeto que implementa una interfaz que llama para hacer cualquier variable funcionalidad que de otro modo habrías puesto en los métodos abstractos. Esto conducirá a un código mucho más simple y más reutilizable (en mi experiencia), y también más comprobable.
¿El título es una pregunta o demanda?:) –
+1 a jdk, editado para reflejar su observación =) –
¡Lo siento! Eso me enseñará a no publicar después de un turno de 16 horas en el trabajo jajaja. – Silvanus