¿Debe llamar explícitamente al constructor de superclase en las subclases de Java?
Al definir una subclase, es una práctica común ver constructores que llaman explícitamente a la constructor de superclase usando super(). Sin embargo, uno puede preguntarse si esto es necesario.
¿El compilador agrega automáticamente super()?
Sí, si el constructor de la subclase omite una llamada a la superclase constructor, el compilador llamará automáticamente al constructor sin argumentos accesible (constructor sin argumentos) en la superclase. Este comportamiento predeterminado se conoce como encadenamiento de constructores.
Tipos de constructores
Cuando es super( ) ¿Obligatorio?
El uso explícito de super() solo es necesario si:
Ejemplo 1:
public class Base {}
public class Derived extends Base {}
No se necesita una llamada explícita a super() porque Base tiene un constructor predeterminado.
Ejemplo 2:
public class Base {
public Base(int i) {}
}
public class Derived extends Base {
public Derived(int i) {
super(i); // Explicitly call the Base(int) constructor
}
}
En este caso, se requiere super(i) porque la superclase no tiene un constructor sin argumentos y el constructor de la subclase necesita proporcionar un valor inicial para su parámetro i.
Al comprender estos conceptos, puede evitar llamadas super() innecesarias y garantizar un encadenamiento de constructores adecuado en sus subclases.
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