logo

Herencia en Java

  1. Herencia
  2. Tipos de herencia
  3. ¿Por qué la herencia múltiple no es posible en Java en caso de clase?

Herencia en Java Es un mecanismo en el que un objeto adquiere todas las propiedades y comportamientos de un objeto padre. Es una parte importante de Ups (Sistema de programación Orientado a Objetos).

La idea detrás de la herencia en Java es que puedes crear nuevos clases que se basan en clases existentes. Cuando heredas de una clase existente, puedes reutilizar métodos y campos de la clase principal. Además, también puedes agregar nuevos métodos y campos en tu clase actual.

La herencia representa la relación ES-A que también se conoce como padre-hijo relación.

¿Por qué utilizar la herencia en Java?

Términos utilizados en herencia

    Clase:Una clase es un grupo de objetos que tienen propiedades comunes. Es una plantilla o plano a partir del cual se crean los objetos.Subclase/clase secundaria:La subclase es una clase que hereda la otra clase. También se le llama clase derivada, clase extendida o clase hija.Superclase/clase para padres:La superclase es la clase de donde una subclase hereda las características. También se le llama clase base o clase padre.Reutilizabilidad:Como su nombre lo especifica, la reutilización es un mecanismo que le facilita reutilizar los campos y métodos de la clase existente cuando crea una nueva clase. Puede utilizar los mismos campos y métodos ya definidos en la clase anterior.

La sintaxis de la herencia de Java.

 class Subclass-name extends Superclass-name { //methods and fields } 

El extiende la palabra clave indica que está creando una nueva clase que se deriva de una clase existente. El significado de 'extiende' es aumentar la funcionalidad.

En la terminología de Java, una clase heredada se llama padre o superclase, y la nueva clase se llama hija o subclase.


Ejemplo de herencia de Java

Herencia en Java

Como se muestra en la figura anterior, Programador es la subclase y Empleado es la superclase. La relación entre las dos clases es Programador IS-A Empleado . Significa que el Programador es un tipo de Empleado.

 class Employee{ float salary=40000; } class Programmer extends Employee{ int bonus=10000; public static void main(String args[]){ Programmer p=new Programmer(); System.out.println('Programmer salary is:'+p.salary); System.out.println('Bonus of Programmer is:'+p.bonus); } } 
Pruébalo ahora
 Programmer salary is:40000.0 Bonus of programmer is:10000 

En el ejemplo anterior, el objeto Programador puede acceder al campo de su propia clase así como al de la clase Empleado, es decir, la reutilización del código.


Tipos de herencia en java

Según la clase, puede haber tres tipos de herencia en Java: única, multinivel y jerárquica.

En la programación Java, la herencia múltiple e híbrida se admite únicamente a través de la interfaz. Aprenderemos sobre las interfaces más adelante.

Tipos de herencia en Java

Nota: La herencia múltiple no se admite en Java a través de clases.

Cuando una clase hereda varias clases, se conoce como herencia múltiple. Por ejemplo:

Herencia múltiple en Java

Ejemplo de herencia única

Cuando una clase hereda otra clase, se conoce como herencia única . En el ejemplo que se muestra a continuación, la clase Perro hereda la clase Animal, por lo que existe una herencia única.

cadena java a int

Archivo: TestInheritance.java

 class Animal{ void eat(){System.out.println('eating...');} } class Dog extends Animal{ void bark(){System.out.println('barking...');} } class TestInheritance{ public static void main(String args[]){ Dog d=new Dog(); d.bark(); d.eat(); }} 

Producción:

 barking... eating... 

Ejemplo de herencia multinivel

Cuando existe una cadena de herencia, se conoce como herencia multinivel . Como puede ver en el ejemplo siguiente, la clase BabyDog hereda la clase Perro, que a su vez hereda la clase Animal, por lo que existe una herencia multinivel.

Archivo: TestInheritance2.java

 class Animal{ void eat(){System.out.println('eating...');} } class Dog extends Animal{ void bark(){System.out.println('barking...');} } class BabyDog extends Dog{ void weep(){System.out.println('weeping...');} } class TestInheritance2{ public static void main(String args[]){ BabyDog d=new BabyDog(); d.weep(); d.bark(); d.eat(); }} 

Producción:

 weeping... barking... eating... 

Ejemplo de herencia jerárquica

Cuando dos o más clases heredan una sola clase, se conoce como herencia jerárquica . En el ejemplo que se muestra a continuación, las clases Perro y Gato heredan la clase Animal, por lo que existe una herencia jerárquica.

Archivo: TestInheritance3.java

 class Animal{ void eat(){System.out.println('eating...');} } class Dog extends Animal{ void bark(){System.out.println('barking...');} } class Cat extends Animal{ void meow(){System.out.println('meowing...');} } class TestInheritance3{ public static void main(String args[]){ Cat c=new Cat(); c.meow(); c.eat(); //c.bark();//C.T.Error }} 

Producción:

 meowing... eating... 

P) ¿Por qué Java no admite la herencia múltiple?

Para reducir la complejidad y simplificar el lenguaje, Java no admite la herencia múltiple.

Considere un escenario donde A, B y C son tres clases. La clase C hereda las clases A y B. Si las clases A y B tienen el mismo método y lo llama desde un objeto de clase secundaria, habrá ambigüedad al llamar al método de la clase A o B.

Dado que los errores en tiempo de compilación son mejores que los errores en tiempo de ejecución, Java genera errores en tiempo de compilación si hereda 2 clases. Entonces, ya sea que tenga el mismo método o uno diferente, habrá un error en el tiempo de compilación.

 class A{ void msg(){System.out.println('Hello');} } class B{ void msg(){System.out.println('Welcome');} } class C extends A,B{//suppose if it were public static void main(String args[]){ C obj=new C(); obj.msg();//Now which msg() method would be invoked? } } 
Pruébalo ahora
 Compile Time Error