¿Puede una clase abstracta tener un constructor?

¡Sí! comprendamos primero, qué es realmente una clase abstracta,

Una clase abstracta es una clase que se declara abstracta; puede incluir o no métodos abstractos. Las clases abstractas no pueden instanciarse, pero pueden subclasificarse. fuente: sitio de Oracle

Un constructor en Java en realidad no “construye” el objeto, se usa para inicializar campos. Imagine que su clase abstracta tiene campos x e y, y que siempre quiere que se inicialicen de cierta manera, sin importar qué La subclase concreta finalmente se crea. Entonces creas un constructor e inicializas estos campos.

Ahora, si tiene dos subclases diferentes de su clase abstracta, cuando las instancia, se llamarán sus constructores, y luego se llamará al constructor principal y se inicializarán los campos.

Ex.

Clase abstracta Persona {
nombre de cadena privada;
Persona pública (nombre de cadena) {
this.name = nombre;
}
}

clase SoccerPlayer extiende Persona {
public SoccerPlayer (nombre de cadena) {
super (nombre);
}
}
Persona p = nuevo SoccerPlayer (“Ronaldo”);

si podemos.

clase abstracta Producto {
int multiplyBy;
Producto público (int multiplyBy) {
this.multiplyBy = multiplyBy;
System.out.println (multiplyBy);
}

public int mutiply (int val) {
devuelve multiplyBy * val;
}
}

clase TimesTwo extiende el producto {
public TimesTwo () {
super (2);
System.out.println (multiplyBy);
}
}

clase TimesWhat extiende el producto {
public TimesWhat (int what) {
super (que);
}
}
Prueba de clase pública
{
público estático vacío principal (String args [])
{
TimesTwo obj = nuevo TimesTwo ();
System.out.println (obj.multiplyBy);

}
}

Respondiendo con referencia a java

Sí, podemos crear constructores de clases abstractas.

Imagine que su clase abstracta tiene campos ayb, y que siempre desea que se inicialicen de cierta manera, sin importar qué subclase concreta real se cree eventualmente. Entonces creas un constructor e inicializas estos campos.

Ahora, si tiene dos subclases diferentes de su clase abstracta, cuando las instancia, se llamarán sus constructores, y luego se llamará al constructor principal y se inicializarán los campos.

En caso de que no haya especificado, se llamará a cualquier constructor predeterminado.

Recuerda siempre el orden de los constructores:

Gran padre -> padre constructor -> constructor hijo.

Sí, la clase abstracta puede declarar y definir el constructor en Java. Como no puede crear una instancia de clase abstracta, solo se puede llamar al constructor durante el encadenamiento del constructor, es decir, cuando crea una instancia de clase de implementación concreta. Además, incluso si no proporciona ningún constructor, el compilador agregará un constructor predeterminado sin argumentos en la clase abstracta, sin que su subclase no se compile, ya que la primera instrucción en cualquier constructor llama implícitamente a super (), el constructor de superclase predeterminado en Java.

antes de entender por qué las clases abstractas tienen un constructor en Java, debes entender cuál es el trabajo del constructor en Java.

constructor se utiliza para encadenar constructores en java al constructor de clase actual del constructor de clase padre con la palabra clave implícita super (); que se puede indicar o no. Para poner la palabra clave super () es responsabilidad del compilador. constructor de búsqueda de compilador en su clase existente si el compilador encontró un constructor, entonces es correcto que haya escrito super en su constructor si ha escrito para que el compilador no escriba super. Si no ha escrito super, entonces la responsabilidad del constructor de escribir super () en el comienzo de la primera declaración en su constructor existente para el encadenamiento del constructor al constructor de la clase padre.

ven a tu pregunta

sabes que cada clase es una subclase de clase objeto. significa que cada constructor de clase tiene que hacer un encadenamiento de constructor con un constructor de clase de objeto con la palabra clave super () No importa que la clase sea abstracta o no. por eso la clase abstracta tiene un constructor

Gracias por darme la oportunidad

ir a más conocimiento Java

P) ¿Podemos definir constructor dentro de la clase abstracta?

  • Sí, podemos definir constructor dentro de la clase abstracta
  • Los constructores predeterminados y parametrizados están permitidos dentro de la clase abstracta

Para obtener más preguntas y respuestas sobre clases y métodos abstractos de Java , lea Preguntas y respuestas de la entrevista sobre clases y métodos abstractos de Java

Por favor refiérase a esta respuesta mía.

La respuesta de Sathyaish Chakravarthy a ¿Por qué la clase abstracta tendrá un constructor cuando no se pueda instanciar?

Como sabemos, la clase abstracta puede tener una variable miembro que no se puede inicializar. Entonces el constructor está aquí para inicializar esos valores predeterminados. Dado que es una implementación incompleta, no podemos instanciar esto.

Sí. La clase abstracta puede tener un constructor, excepto el privado.

Sí.

Se llamará a este constructor al crear instancias de una subclase concreta.

More Interesting

¿Qué hay dentro de un teléfono inteligente que le permite hacer videollamadas?

¿Qué tecnologías están reemplazando los trabajos de Oracle DBA?

¿Hay algo hecho por el hombre que nunca se le dio un nombre?

¿Qué tecnologías potencian, en lugar de reemplazar a las personas?

¿Los medios en línea se harán cargo de la televisión por completo en los próximos 5 años?

¿Qué cosa has estado usando durante tanto tiempo que todavía funciona tan bien?

Con el advenimiento de la nueva tecnología y la nanotecnología, las baterías se han vuelto cada vez más importantes para alimentar dispositivos pequeños / de alto rendimiento. ¿Ha habido algún cambio en la tecnología de la batería para satisfacer esta necesidad?

¿Hay alguna evidencia que respalde la teoría de que los usuarios de iOS tienen, en promedio, menos conocimientos técnicos que los usuarios de Android?

¿Por qué todavía no se ha desarrollado una impresora o impresora multifunción líder en el mercado?

Cómo mejorar la distancia recorrida por mi walkie talkie

Vivimos en una época de Internet móvil inalámbrico, drones e impresión 3D, ¿por qué no me impresionan?

¿Es posible que la realidad virtual reemplace la realidad misma? ¿Cuáles son las implicaciones si eso sucediera?

¿Cómo funcionaba la gente antes de la difusión del correo electrónico?

¿Por qué Apple desconectó QuickTime para Windows?

¿Cómo hacemos aparatos en casa para producir sonidos de más de 20 kHz de frecuencia que son inaudibles para los seres humanos?