¿Es opcional la presencia de super() en constructores?
En la programación orientada a objetos, es una práctica común utilizar constructores en clases derivadas para invocar Constructores en sus superclases. Sin embargo, algunos desarrolladores cuestionan la necesidad de especificar explícitamente super() dentro de los constructores.
Invocación automática de super() por parte del compilador
El compilador de Java inserta automáticamente una llamada al constructor sin argumentos accesible de la superclase si el constructor de la subclase no especifica un constructor de superclase. Esto significa que en la mayoría de los casos, la omisión de super() no afecta el comportamiento del programa.
Excepciones a la regla
Sin embargo, hay situaciones donde se requiere la invocación explícita de super():
Uso del constructor en presencia de argumentos
Cuando un constructor de subclase tiene argumentos, es responsabilidad del constructor de la subclase pasar los argumentos apropiados al constructor de superclase. El compilador no invocará automáticamente un constructor de superclase con argumentos a menos que se especifique explícitamente.
Ejemplo
Considere el siguiente código:
public class Base {
private Base() {}
}
public class Derived extends Base {
public Derived(int i) {
super(); // Call the default no-args constructor of Base
}
}
En este ejemplo, la llamada super() en el constructor Derivado es esencial porque Base tiene un constructor privado sin argumentos.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3