Herencia y constructores en Java

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
    }
}
Producción

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();
    }
}
Producción

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *