Herencia en Java OOP con ejemplo

¿Qué es la herencia?

La herencia es un mecanismo en el que una clase adquiere la propiedad de otra clase. Por ejemplo, un niño hereda los rasgos de sus padres. Con la herencia, podemos reutilizar los campos y métodos de la clase existente. Por lo tanto, la herencia facilita la reutilización y es un concepto importante de los POO.

En este tutorial, aprenderá:

  • Tipos de herencia
  • Herencia en Java
  • Ejemplo de herencia de Java
  • Súper palabra clave
  • Aprenda la herencia en OOP con el ejemplo

Tipos de herencia

Hay varios tipos de herencia en Java:

Herencia única:

En Herencia Única, una clase extiende a otra clase (solo una clase).

Herencia única

En el diagrama anterior, la Clase B se extiende solo a la Clase A. La Clase A es una superclase y la Clase B es una Subclase.

Herencia múltiple:

En herencia múltiple, una clase que se extiende a más de una clase. Java no admite herencia múltiple.

Herencia múltiple

Según el diagrama anterior, la Clase C amplía la Clase A y la Clase B.

Herencia multinivel:

En Herencia multinivel, una clase puede heredar de una clase derivada. Por tanto, la clase derivada se convierte en la clase base de la nueva clase.

Herencia multinivel

Como se muestra en el diagrama, la Clase C es una subclase de B y B es una subclase de la Clase A.

Herencia jerárquica:

En la herencia jerárquica, muchas subclases heredan una clase.

Herencia jerárquica

Según el ejemplo anterior, las clases B, C y D heredan la misma clase A.

Herencia híbrida:

La herencia híbrida es una combinación de herencia única y múltiple.

Herencia híbrida

Según el ejemplo anterior, todos los miembros públicos y protegidos de la Clase A se heredan en la Clase D, primero a través de la Clase B y, en segundo lugar, a través de la Clase C.

Nota: Java no admite herencia híbrida / múltiple

Herencia en Java

LA HERENCIA DE JAVA es un mecanismo en el que una clase adquiere la propiedad de otra clase. En Java, cuando existe una relación "Es-A" entre dos clases, usamos Herencia. La clase padre se llama superclase y la clase heredada se llama subclase. La palabra clave

extends es utilizado por la subclase para heredar las características de la superclase.

La herencia es importante ya que conduce a la reutilización del código.

Sintaxis de herencia de Java:

class subClass extends superClass{//methods and fields}

Ejemplo de herencia de Java

class Doctor {void Doctor_Details() {System.out.println("Doctor Details… ");}}class Surgeon extends Doctor {void Surgeon_Details() {System.out.println("Surgen Detail… ");}}public class Hospital {public static void main(String args[]) {Surgeon s = new Surgeon();s.Doctor_Details();s.Surgeon_Details();}}

Súper palabra clave

La súper palabra clave es similar a "esta" palabra clave.

La palabra clave super se puede utilizar para acceder a cualquier miembro de datos o métodos de la clase principal.

La palabra clave Super se puede utilizar a nivel de variable, método y constructor.

Sintaxis:

super.();

Aprenda la herencia en OOP con el ejemplo

Considere la misma aplicación bancaria del ejemplo anterior.

Se supone que debemos abrir dos tipos de cuentas diferentes, una para ahorrar y otra para verificar (también conocida como corriente).

Comparemos y estudiemos cómo podemos abordar la codificación desde una perspectiva de programación estructurada y orientada a objetos. Enfoque estructural : en la programación estructurada, crearemos dos funciones:

  1. Uno para retirar
  2. Y el otro para la acción de depósito.

Dado que el funcionamiento de estas funciones sigue siendo el mismo en todas las cuentas.

Enfoque de OOP : utilizando el enfoque de programación de OOP . Creamos dos clases.

  • Cada uno tiene implementación de las funciones de depósito y retiro.
  • Esto supondrá un trabajo extra redundante.

Solicitud de cambio en el software

Ahora hay un cambio en la especificación de requisitos para algo que es tan común en la industria del software. Se supone que debe agregar una cuenta bancaria con funcionalidad privilegiada con servicio de sobregiro. Como antecedentes, el sobregiro es una facilidad en la que puede retirar una cantidad mayor que el saldo disponible en su cuenta.

Enfoque estructural: Utilizando el enfoque funcional, tengo que modificar mi función de retirada, que ya está probada y en la línea base. Y agregar un método como el siguiente se encargará de los nuevos requisitos.

Enfoque de OOP: utilizando el enfoque de OOP, solo necesita escribir una nueva clase con una implementación única de la función de retirada. Nunca tocamos el código probado.

Otra solicitud de cambio

¿Qué pasa si el requisito cambia más? Me gusta agregar una cuenta de tarjeta de crédito con su propio requisito único de depósitos .

Enfoque estructural: al usar el enfoque estructural, debe cambiar la pieza probada del código de depósito nuevamente.

Enfoque de OOP : pero utilizando el enfoque orientado a objetos, simplemente creará una nueva clase con su implementación única del método de depósito (resaltado en rojo en la imagen a continuación).

Entonces, aunque la programación estructural parece un enfoque fácil inicialmente, OOP gana a largo plazo.

Ventaja de la herencia en OOP

Pero se puede argumentar que en todas las clases, tiene piezas de código repetidas.

Para superar esto, cree una clase principal, diga "cuenta" e implemente la misma función de depósito y retiro. Y hacer que las clases secundarias hereden la clase "cuenta". Para que tengan acceso a las funciones de retiro y depósito en clase de cuenta.

No es necesario que las funciones se implementen individualmente. Esto es herencia en java. .

Articulos interesantes...