Creación de objetos Java de clase heredada

En Java, al ser un lenguaje orientado a objetos, los objetos dentro de una clase se crean con la ayuda de constructores. Cuando se trata de herencia en Java, básicamente tratamos de derivar una clase de otra clase. Ahora, comprendamos la herencia un paso más profundo, de modo que cuando una clase en particular hereda una clase, tenemos una palabra clave que usamos para referirnos al constructor principal a través de la palabra clave super .

Se utiliza como sufijo seguido del “.” operador en constructor/es en una clase. Esta propiedad de la clase principal (superclase) también se inicia mucho antes de que la clase secundaria (subclase) los herede y los use. 

Nota: Es obligatorio que cuando se crea un objeto, se llame al constructor, pero no es obligatorio cuando se llama a un constructor, la creación de objetos es obligatoria. 

Ya hemos visto anteriormente cuando creamos un objeto de una subclase, se llama al constructor de la misma clase, si no se hace, se llama al constructor predeterminado mientras llamamos al constructor de la superclase sin crear un objeto de clase dentro de la subclase a través de una palabra clave.     

En herencia, la subclase adquiere propiedades de superclase. Un punto importante a tener en cuenta es que, cuando se crea un objeto de subclase, no se creará un objeto separado de un objeto de superclase. Solo se crea un objeto de subclase que tiene variables de superclase. Esta situación es diferente de la suposición normal de que una llamada de constructor significa que se crea un objeto de la clase, por lo que no podemos decir ciegamente que cada vez que se ejecuta un constructor de clase, el objeto de esa clase se crea o no.

Ejemplo:

Java

// Java program to demonstrate that Both Super Class
// and Subclass Constructors Refer to Same Object
 
// Importing required classes
import java.util.*;
 
// Class 1
// Super Class
class Fruit {
 
    // Method inside super class
    public Fruit() {
 
        // Print statement
        System.out.println("Super class constructor");
 
        // Displaying object hashcode of super class
        System.out.println("Super class object hashcode :" +
                           this.hashCode());
 
        System.out.println(this.getClass().getName());
    }
}
 
// Class 2
// Sub class extending above super class
class Apple extends Fruit {
 
    // Method inside sub class
    public Apple() {
 
        // Print statement
        System.out.println("Subclass constructor invoked");
 
        // Displaying object hashcode of sub class
        System.out.println("Sub class object hashcode :" +
                           this.hashCode());
 
        System.out.println(this.hashCode() + " " +
                           super.hashCode());
 
        System.out.println(this.getClass().getName() + " " +
                           super.getClass().getName());
    }
}
 
// Class 3
// Main class
public class GFG {
 
    // Main driver method
    public static void main(String[] args) {
 
        // Creating an instance of above class
        // inside main() method
        Apple myApple = new Apple();
    }
}
Producción

Super class constructor
Super class object hashcode :1149319664
Apple
Subclass constructor invoked
Sub class object hashcode :1149319664
1149319664 1149319664
Apple Apple

Explicación de salida:   como podemos ver, tanto el código hash del objeto de la superclase (Fruit) como el código hash del objeto de la subclase (Apple) son iguales, por lo que solo se crea un objeto. Este objeto es de clase Apple (subclase) ya que cuando intentamos imprimir el nombre de la clase en la que se crea el objeto, está imprimiendo Apple, que es una subclase.

Este artículo es una contribución de Gaurav Miglani . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks. 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 *