Los constructores en Java se utilizan para inicializar los valores de los atributos del objeto que sirven al objetivo de acercar Java al mundo real. Ya tenemos un constructor predeterminado que se llama automáticamente si no se encuentra ningún constructor en el código. Pero si hacemos que cualquier constructor diga constructor parametrizado para inicializar algunos atributos, entonces debe escribir el constructor predeterminado porque ahora ya no se llamará automáticamente.
Nota: en Java, el constructor de la clase base sin argumentos se llama automáticamente en el constructor de la clase derivada.
Ejemplo:
Java
// Java Program to Illustrate // Invocation of Constructor // Calling Without Usage of // super Keyword // Class 1 // Super class class Base { // Constructor of super class Base() { // Print statement System.out.println( "Base Class Constructor Called "); } } // Class 2 // Sub class class Derived extends Base { // Constructor of sub class Derived() { // Print statement System.out.println( "Derived Class Constructor Called "); } } // Class 3 // Main class class GFG { // Main driver method public static void main(String[] args) { // Creating an object of sub class // inside main() method Derived d = new Derived(); // Note: Here first super class constructor will be // called there after derived(sub class) constructor // will be called } }
Base Class Constructor Called Derived Class Constructor Called
Salida Explicación: Aquí se llamará al primer constructor de la superclase, luego se llamará al constructor derivado (subclase) porque la llamada del constructor es de arriba a abajo. Y sí, si hubiera alguna clase que nuestra clase principal esté extendiendo, el cuerpo de esa clase se ejecutará a partir de entonces y llegará a las clases derivadas.
Pero, si queremos llamar a un constructor parametrizado de la clase base, entonces podemos llamarlo usando super(). El punto a tener en cuenta es que la llamada al constructor de la clase base debe ser la primera línea en el constructor de la clase derivada.
Implementación: super(_x) es el constructor de clase derivado de la primera línea.
Java
// Java Program to Illustrate Invocation // of Constructor Calling With Usage // of super Keyword // Class 1 // Super class class Base { int x; // Constructor of super class Base(int _x) { x = _x; } } // Class 2 // Sub class class Derived extends Base { int y; // Constructor of sub class Derived(int _x, int _y) { // super keyword refers to super class super(_x); y = _y; } // Method of sub class void Display() { // Print statement System.out.println("x = " + x + ", y = " + y); } } // Class 3 // Main class public class GFG { // Main driver method public static void main(String[] args) { // Creating object of sub class // inside main() method Derived d = new Derived(10, 20); // Invoking method inside main() method d.Display(); } }
x = 10, y = 20
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA