Ejecución de Constructores Java en Herencia
- Ejecución de Constructores Java en Herencia
- Ejecución del constructor Java predeterminado en herencia
- Ejecución del constructor Java en herencia cuando la clase principal tiene un constructor predeterminado y parametrizado
-
Use
super
para llamar al constructor parametrizado de la clase principal y todas las clases secundarias
Hoy aprenderemos sobre la ejecución de constructores de Java en herencia. Veremos ejemplos de código de los constructores predeterminados y parametrizados en las clases derivadas (también denominadas clases secundarias y subclases).
Ejecución de Constructores Java en Herencia
Se necesita suficiente conocimiento sobre herencia para continuar con este artículo. Si está leyendo este tutorial, asumimos que tiene una sólida comprensión de la herencia de Java.
Aprendamos sobre el proceso de ejecución de los constructores de Java mientras extendemos la clase principal (también conocida como clase base o superclase) usando la palabra clave extends
.
Ejecución del constructor Java predeterminado en herencia
Código de ejemplo:
class parentClass {
parentClass() {
System.out.println("Default constructor of the parent class.");
}
}
class childClass extends parentClass {
childClass() {
System.out.println("Default constructor of the child class.");
}
}
class grandChildClass extends childClass {
grandChildClass() {
System.out.println("Default constructor of the grand child class.");
}
}
public class constructorsInInheritance {
public static void main(String[] args) {
grandChildClass obj = new grandChildClass();
}
}
Producción :
Default constructor of the parent class.
Default constructor of the child class.
Default constructor of the grand child class.
Aquí, tenemos una clase de prueba llamada constructorsInInheritance
, que crea el objeto de grandChildClass
.
Tenemos otras tres clases llamadas parentClass
, childClass
, grandChildClass
, donde grandChildClass
hereda la childClass
y childClass
amplía la parentClass
.
Aquí, el constructor predeterminado parentClass
es llamado automáticamente por un constructor childClass
. Cada vez que creamos una instancia de la clase secundaria, el constructor de la clase principal se ejecuta automáticamente, seguido del constructor de la clase secundaria.
Observe la salida dada arriba. Si todavía está confundido, vea la siguiente explicación visual.
¿Y si creamos un objeto de la childClass
en el método main
? ¿Cómo se ejecutarán ahora los constructores predeterminados?
Primero se ejecutará el constructor de parentClass
, y luego el constructor de childClass
producirá el siguiente resultado.
Producción :
Default constructor of the parent class.
Default constructor of the child class.
Ejecución del constructor Java en herencia cuando la clase principal tiene un constructor predeterminado y parametrizado
Código de ejemplo:
class parentClass {
parentClass() {
System.out.println("Default constructor of the parent class.");
}
parentClass(String name) {
System.out.println("Hi " + name + "! It's a parameterized constructor of the parent class");
}
}
class childClass extends parentClass {
childClass() {
System.out.println("Default constructor of the child class.");
}
}
class grandChildClass extends childClass {
grandChildClass() {
System.out.println("Default constructor of the grand child class.");
}
}
public class constructorsInInheritance {
public static void main(String[] args) {
grandChildClass obj = new grandChildClass();
}
}
Producción :
Default constructor of the parent class.
Default constructor of the child class.
Default constructor of the grand child class.
Aquí, tenemos un constructor parametrizado en parentClass
. Sin embargo, los constructores predeterminados todavía se llaman porque invocamos el constructor predeterminado grandChildClass()
en el método main
, llamando además al constructor predeterminado de la clase principal.
Escribamos también los constructores parametrizados en childClass
y grandChildClass
. Luego, llame al constructor parametrizado de grandChildClass
en la función main
.
Observe qué constructores se llaman, si son predeterminados o parametrizados.
Código de ejemplo:
class parentClass {
parentClass() {
System.out.println("Default constructor of the parent class.");
}
parentClass(String name) {
System.out.println("Hi " + name + "! It's a parameterized constructor of the parent class");
}
}
class childClass extends parentClass {
childClass() {
System.out.println("Default constructor of the child class.");
}
childClass(String name) {
System.out.println("Hi " + name + "! It's a parameterized constructor of the child class");
}
}
class grandChildClass extends childClass {
grandChildClass() {
System.out.println("Default constructor of the grand child class.");
}
grandChildClass(String name) {
System.out.println(
"Hi " + name + "! It's a parameterized constructor of the grand child class");
}
}
public class constructorsInInheritance {
public static void main(String[] args) {
grandChildClass obj = new grandChildClass("Mehvish");
}
}
Producción :
Default constructor of the parent class.
Default constructor of the child class.
Hi Mehvish! It's a parameterized constructor of the grand child class
El código anterior solo llama al constructor parametrizado de grandChildClass
. Usamos el super()
para llamar al constructor parametrizado de parentClass
, childClass
y grandChildClass
.
Recuerde, la llamada al constructor de la clase principal debe estar en la primera línea del constructor de la clase secundaria.
Use super
para llamar al constructor parametrizado de la clase principal y todas las clases secundarias
Código de ejemplo:
class parentClass {
parentClass() {
System.out.println("Default constructor of the parent class.");
}
parentClass(String name) {
System.out.println("Hi " + name + "! It's a parameterized constructor of the parent class");
}
}
class childClass extends parentClass {
childClass() {
System.out.println("Default constructor of the child class.");
}
childClass(String name) {
super(name);
System.out.println("Hi " + name + "! It's a parameterized constructor of the child class");
}
}
class grandChildClass extends childClass {
grandChildClass() {
System.out.println("Default constructor of the grand child class.");
}
grandChildClass(String name) {
super(name);
System.out.println(
"Hi " + name + "! It's a parameterized constructor of the grand child class");
}
}
public class constructorsInInheritance {
public static void main(String[] args) {
grandChildClass obj = new grandChildClass("Mehvish");
}
}
Producción :
Hi Mehvish! It's a parameterized constructor of the parent class
Hi Mehvish! It's a parameterized constructor of the child class
Hi Mehvish! It's a parameterized constructor of the grand child class
Usamos la palabra clave super
para llamar al constructor de clase padre parametrizado. Se refiere a la clase padre (superclase o clase base).
Lo usamos para acceder al constructor de la clase principal y llamamos a los métodos de la clase principal.
super
es muy útil para los métodos con los nombres exactos en las clases padre e hijo.