? No es posible crear un objeto llamando directamente al constructor de una clase abstract
. El constructor de una clase abstract
solo puede invocarse desde una clase derivada. Por lo tanto, parece que los constructores de una clase abstracta deben ser protected
o paquete-privado (este último para los casos inusuales de restringir el uso de un constructor a clases derivadas dentro del paquete). Sin embargo, Java permite que el constructor de una clase abstract
sea public
.¿Hay buenas razones para un constructor público de una clase abstracta
¿Hay algunas circunstancias en las que es útil para declarar el constructor de una clase abstract
ser public
, en lugar de protected
o paquete-privada?
Esto no es del todo un duplicado de la pregunta "Abstract class constructor access modifier": claramente se puede declara un constructor para ser public
; Quiero saber si alguna vez hay buena razón para hacerlo. Me parece que no hay. Veo que C# has a similar peculiarity.
El constructor no tiene nada que ver con la "Creación" del objeto. Es solo un método que se llama al "crear" un objeto. Por lo tanto, la clase abstracta puede tener constructores públicos a los que se llamaría al crear una instancia de la clase abstracta (a través de la subclase) y en ese método de constructor, se escribiría el código para inicializar las variables miembro. http://stackoverflow.com/questions/260666/can-a-abstract-class-have-a-constructor?lq=1 –
Los constructores también pueden ser 'privados', que se pueden usar en el encadenamiento de constructores. –