what is inheritance java tutorial with examples
Este tutorial explica el concepto de herencia en Java, términos relacionados como palabras clave 'extiende' y 'super', subclase, superclase, relaciones Is-A, HAS-A, etc.
Después de conocer los tres pilares de la programación orientada a objetos, a saber, abstracción, encapsulación y polimorfismo en Java, llegamos al último pilar de la programación orientada a objetos, es decir, la herencia.
Comenzando con este tutorial, discutiremos la herencia en Java en los próximos dos tutoriales.
=> Lea la serie de formación Easy Java.
Lo que vas a aprender:
Herencia en Java
La herencia en Java se puede definir como una técnica o proceso en el que un objeto de una clase adquiere el comportamiento y las propiedades de otro objeto. Esto se hace heredando la clase o estableciendo una relación entre dos clases.
Por ejemplo, una rana es un anfibio. Como otros animales de la clase Amphibian, Frog puede tener muchas características que son comunes a otros animales. Entonces, aquí un anfibio es una especie y animales como las ranas son sus miembros.
Si tenemos que representar las especies de anfibios y sus miembros en una representación de software usando OOP, entonces lo que haremos es desarrollar una clase 'Anfibio' que contenga propiedades o comportamiento que sea común a los anfibios en general.
De esta manera, no tenemos que duplicar las propiedades y el comportamiento comunes de cada animal anfibio que describimos. Crearemos directamente una clase para cada uno de los animales anfibios y la heredaremos de la clase Amphibian como se muestra a continuación.

Entonces, una idea general detrás de la característica 'Herencia' es que podemos crear nuevas clases heredando de las clases ya existentes. Al heredar de las clases ya existentes, podemos usar las propiedades y el comportamiento de estas clases. Además, podemos agregar más propiedades y / o comportamiento en nuestra nueva clase.
La característica de herencia representa una ' padre-hijo ”Conexión o relación en Java. La clase de la que se hereda la nueva clase se denomina ' Clase para padres 'Mientras que la nueva clase se llama' Clase infantil ”.
La herencia se utiliza principalmente:
- Xa anulación del método para que podamos lograr polimorfismo en tiempo de ejecución .
- A reutilizar el código . Heredando de las clases ya existentes, aseguramos la reutilización de código.
Terminología común usada en herencia
- Reutilización: Mecanismo por el cual las nuevas clases reutilizan campos o propiedades y métodos de una clase existente.
- Clase: Una clase es una colección de objetos que tienen propiedades comunes. Una clase puede verse como una plantilla o un plano para los objetos.
- Subclase / Clase infantil: Una clase que hereda de otra clase es una subclase o una clase secundaria o una clase derivada.
- Superclase / Clase para padres: Una clase que es heredada por otra clase para adquirir propiedades y métodos se denomina clase principal, superclase o clase base.
La siguiente jerarquía de herencia es un ejemplo que muestra una superclase y una subclase.

Tenemos una clase de empleado con campos OrganisationName y EmployeeId. También puede tener otros campos como el nombre del empleado, el departamento y otros detalles del empleado.
Luego obtenemos otra clase llamada 'Desarrollador de software' con el salario y las ventajas del campo. La clase SoftwareDeveloper hereda de la clase Employee y, por lo tanto, también adquiere las propiedades de la clase Employee.
Como se muestra en el diagrama anterior, aquí la clase Employee es una clase Super o Base y SoftwareDeveloper es una subclase o clase derivada.
'Extiende' palabra clave en Java
En Java, la palabra clave 'extiende' se usa para heredar la clase.
La sintaxis general de la herencia de Java se da a continuación:
|_+_|Como se muestra arriba, la palabra clave 'extiende' aparece después del nombre de clase en la sintaxis de declaración de clase.
La palabra clave 'extiende' transmite que estamos creando una nueva clase 'Subclase' que heredará las propiedades y el comportamiento de 'Superclase'. En otras palabras, la palabra clave extiende indica que estamos construyendo una nueva clase Subclase sobre la funcionalidad existente de la Superclase.
La herencia implementada con la palabra clave 'extiende' es la herencia de clase. En el siguiente tutorial, discutiremos otra palabra clave 'implementos' con la que podemos heredar interfaces.
Un ejemplo de la clase Employee-SoftwareDeveloper que hemos explicado anteriormente se puede representar como:
|_+_|Relación IS-A y HAS-A
Considere la siguiente estructura de clases:
|_+_|Entonces, ¿cómo podemos interpretar la estructura anterior? Como la clase Vaca extiende o hereda Mamífero, podemos decir 'Vaca ES UN Mamífero ”o“ Vaca Es un tipo de Mamífero'. Por lo tanto, siempre que expresamos tales relaciones, esa relación en particular es la relación 'IS_A'.
En la estructura anterior, usamos la jerarquía de herencia para expresar el hecho de que un tipo es de otro tipo. Entonces, en la estructura anterior, usamos una herencia para indicar la relación entre Vaca y Mamífero.
De manera similar, podemos expresar algunas relaciones más IS-A de la siguiente manera:

Los anteriores son algunos de los ejemplos comunes de relaciones que podemos expresar usando la herencia en Java.
En general, el tipo de relaciones IS-A se puede expresar usando herencia.
Ahora veamos el ejemplo a continuación:

En el diagrama anterior, vemos que se muestra que un vehículo tiene dos partes, es decir, motor y freno. Entonces, ¿cómo podemos poner este escenario en palabras?
Podemos decir que 'un vehículo contiene un motor y un vehículo contiene un freno ”.
Entonces, lo que estamos expresando aquí no es la relación 'IS-A' sino una relación de contención en la que especificamos un objeto como parte de otro objeto.
implementación de la tabla hash c ++
En el ejemplo anterior, un motor es un parte de vehículo. No es un ' mas o menos ”Vehículo. Este es el ' TIENE UN ”O relación de contención o composición en Java. La relación Has-a en Java se expresa al incluir un objeto como miembro de la clase.
Entonces, si seguimos el mismo ejemplo de vehículo anterior, podemos expresarlo de la siguiente manera:
|_+_|Entonces, un vehículo tiene un motor y un freno. Al expresar la relación de la manera anterior, no estamos interesados en la implementación interna de motor o freno. La clase de vehículo permitirá que las clases de Motor y Freno sepan lo que se necesita y esas clases lo proporcionarán.
Al igual que la relación IS-A, la relación HAS-A también es útil para reutilizar el código.
En este tutorial, discutiremos la herencia (IS-A) en detalle y en el próximo tutorial, discutiremos Contención o Composición (HAS-A).
Ejemplo de herencia de Java
Implementemos un ejemplo simple en Java para demostrar la herencia.
|_+_|Producción:

El programa anterior muestra un ejemplo simple de herencia. Se declara una BaseClass con un método. Luego se declara otra clase DerivedClass que extiende BaseClass. Esta clase también tiene un método.
En el método principal del programa, creamos un objeto DerivedClass y usando este objeto llamamos al método BaseClass así como al método DerivedClass.
La salida muestra los mensajes impresos por ambos métodos. Como DerivedClass extiende BaseClass y el método BaseClass es público, es visible para DerivedClass.
Palabra clave 'super' en Java
En Herencia tratamos con superclases o clases padre y clases hijo. Si tenemos que acceder de manera intermedia a miembros de superclase, incluidas variables, métodos o constructores, entonces necesitamos tener algún mecanismo. Este mecanismo de acceso a los miembros de la clase base se proporciona en Java utilizando una palabra clave 'super'.
Entonces, ¿en qué escenarios usamos la palabra clave 'super' en Java?
A continuación se enumeran situaciones en las que una 'súper' palabra clave puede resultar útil.
- Cuando la clase super / base y la clase sub / derivada tienen los mismos nombres para los miembros, y queremos acceder a los miembros de la superclase, usamos la palabra clave super.
- Cuando queremos acceder al constructor de superclase desde la subclase, usamos la palabra clave super para invocar la palabra clave superclase.

En la figura anterior, mostramos una estructura de herencia. Tanto en la clase base como en la derivada, tenemos una variable String myStr. En la clase derivada, tenemos una función printStr (). En este método, hemos utilizado la palabra clave 'super' para acceder a la variable myStr desde la clase base.
En la figura, hemos mostrado las flechas que apuntan a la variable miembro de clase base y la variable de clase derivada.
Ahora veamos los ejemplos de programación del uso de la palabra clave super para acceder a varios miembros de superclase.
# 1) Variable de miembro de Access Superclass
El siguiente programa Java demuestra el uso de una palabra clave 'super' para acceder a las variables de la clase base.
|_+_|Producción:

El programa anterior muestra cómo acceder a las variables miembro de la clase base desde la clase derivada cuando las variables miembro se declaran con el mismo nombre tanto en la clase base como en la derivada.
Aquí, tenemos la variable myStr que se declara tanto en la clase base como en la derivada. En el método printdetails, nos referimos a la variable myStr de la clase base usando “super.myStr” mientras que se accede directamente a la variable de clase derivada myStr sin ningún calificador.
# 2) Método de acceso a la superclase
A continuación, veremos cómo llamar al método de la clase base cuando el método en la clase base y el método en la clase derivada tienen los mismos nombres.
El siguiente programa demuestra esto.
|_+_|Producción:

# 3) Acceder al constructor de superclase
Cuando heredamos una clase de otra, tenga en cuenta que los constructores no se heredan.
Si queremos ejecutar cualquier instrucción de los constructores de la superclase antes de ejecutar el constructor de la clase derivada, también podemos llamar al constructor de la superclase usando la palabra clave 'super'.
Para llamar al constructor de la superclase usamos la llamada al método.
super (lista de parámetros…)
El siguiente método demuestra el acceso a superconstructores en Java.
|_+_|Producción:

Como podemos ver en el programa anterior, hemos llamado al constructor de la superclase desde el constructor de la clase derivada. Tenga en cuenta que, por convención, siempre que queramos acceder al constructor de superclase, debería ser la primera declaración en el constructor de la clase derivada.
Como la clase base tiene un constructor parametrizado, también pasamos el parámetro apropiado a la super llamada mientras llamamos al constructor.
Si no se realiza una llamada explícita al superconstructor como se indicó anteriormente, el compilador siempre agrega una llamada implícita a super () automáticamente. Pero tenga en cuenta que será una llamada al constructor predeterminado de la superclase.
Preguntas frecuentes
P # 1) ¿Qué es la herencia en Java?
Responder: Un proceso por el cual una clase adquiere las propiedades y el comportamiento de otra clase se llama herencia. En Java, una clase es heredada por otra clase que usa la palabra clave 'extiende'.
La herencia promueve la reutilización del código, ya que al heredar podemos adquirir y usar las propiedades y el comportamiento ya existentes de una clase heredada sin tener que escribir código duplicado.
P # 2) ¿Por qué se usa la herencia en Java?
Responder: La herencia se utiliza principalmente para mejorar la reutilización de la aplicación. Usando la herencia podemos usar clases listas en nuestra aplicación. No tenemos que escribir nuestro código si tenemos la funcionalidad lista.
El segundo uso de la herencia es la invalidación de métodos. Para implementar el polimorfismo en tiempo de ejecución utilizamos la herencia.
ejemplo de expresión regular de c ++
P # 3) ¿Cuáles son las ventajas de la herencia?
Responder: La reutilización es la ventaja clave de la herencia. Compartir código a través de la herencia también resulta en una mejor legibilidad y una mejor organización del código.
También podemos lograr polimorfismo en tiempo de ejecución mediante la anulación de métodos mediante la herencia.
P # 4) ¿Cuáles son las características de la herencia?
Responder: Cualquier característica o rasgo adquirido de la generación anterior se realiza mediante herencia. Por ejemplo, el rasgo de ojos claros que ocurre en muchas familias es un ejemplo de herencia.
Desde el punto de vista de la programación, la herencia proporciona la característica de reutilización y anulación de métodos.
P # 5) ¿Es super () necesario?
Responder: No. Porque si no llamamos a super (), el compilador lo hace implícitamente por nosotros. Pero luego la invocación implícita de super () es el constructor de clase base predeterminado. Entonces, si necesitamos un constructor parametrizado de una clase base, entonces deberíamos llamarlo explícitamente.
Conclusión
En este tutorial, presentamos el concepto de herencia en Java. La herencia es el proceso de adquirir las propiedades y el comportamiento de una clase en otra clase. Discutimos la definición básica y la terminología que usamos en herencia aquí.
También hemos discutido las relaciones Is-A y Has-A en Java. La herencia se utiliza para implementar una relación Is-A.
Luego discutimos las palabras clave 'extendidas' y 'super' en Java que se utilizan en relación con la herencia. Extends se utiliza para implementar la herencia. La palabra clave super se utiliza para hacer referencia al constructor, método o variable de la clase base de la clase derivada.
=> Consulte la guía de formación de Java perfecta aquí.
Lectura recomendada
- Tutorial de la clase Java Scanner con ejemplos
- ¿Qué es Java Vector | Tutorial de clase de vector de Java con ejemplos
- Java Enum: Tutorial de enumeración de Java con ejemplos
- Método Java String length () con ejemplos
- Tutorial de Java Float con ejemplos de programación
- Herencia en C ++
- Tipos de herencia en C ++
- Conceptos de Python OOP (clases, objetos y herencia de Python)