Tengo una clase abstracta A que define métodos abstractos. Esto significa que, para que una clase sea instanciable, todo el método abstracto debe implementarse.¿Cómo puedo forzar que un Constructor se defina en todas las subclases de mi clase abstracta?
Me gustaría que todas mis subclases implementaran un constructor con 2 entradas como parámetros.
Al declarar un constructor se frustra mi propósito, ya que quiero que el constructor esté definido en subclases y no sé nada sobre la implementación. Además, no puedo declarar que un constructor sea abstracto;
¿Hay alguna manera de hacerlo?
ejemplo de lo que quiero:
Digamos que estoy definiendo la API de una clase Matrix. En mi problema, Matrix no puede cambiar sus dimensiones.
Para que se cree una matriz, necesito proporcionar su tamaño.
Por lo tanto, quiero que todos mis implementadores proporcionen al constructor el tamaño como parámetro. Este constructor está motivado por el problema, no por una preocupación de implementación. La implementación puede hacer lo que quiera con estos, siempre que se mantenga toda la semántica de los métodos.
Digamos que quiero proporcionar una implementación básica del método invert()
en mi clase abstracta. Este método creará una nueva matriz con this
dimensiones invertidas. Más específicamente, como se define en la clase abstracta, creará una nueva instancia de la misma clase que this
, usando un constructor que toma dos ints. Como no conoce la instancia, utilizará la reflexión (getDefinedConstructor) y quiero una forma de garantizar que la obtendré y que será significativa para la implementación.
Una solución elegante se puede encontrar aquí: http://stackoverflow.com/questions/6028526/java-force-an-extinging-class –