Herencia Es la característica más poderosa de la programación orientada a objetos. Nos permite heredar las propiedades de una clase a otra clase. En esta sección, discutiremos tipos de herencia en Java en profundidad con ejemplos de la vida real. Además, crearemos programas Java para implementar el concepto de diferentes tipos de herencia.
Herencia
Herencia es un mecanismo para impulsar una nueva clase a partir de una clase existente. La clase existente (antigua) se conoce como clase base o super clase o clase de padres . La nueva clase se conoce como clase derivada o subclase o clase infantil . Nos permite utilizar las propiedades y el comportamiento de una clase (padre) en otra clase (secundaria).
Una clase cuyas propiedades se heredan se conoce como clase de padres y una clase que hereda las propiedades de la clase padre se conoce como clase infantil . Así, se establece una relación entre la clase padre-hijo que se conoce como padre-hijo o Es un relación.
tipos de datos primitivos en java
Supongamos que hay dos clases llamadas Padre y Niño y queremos heredar las propiedades de la clase Padre en la clase Hijo. Esto lo podemos lograr utilizando el se extiende palabra clave.
//inherits the properties of the Father class class Child extends Father { //functionality }
¿Cuándo deberíamos utilizar la herencia?
La herencia proporciona la reutilización de código, especialmente cuando hay una gran cantidad de código para reutilizar. También establece la relación entre diferentes clases que se conoce como Es un relación. También podemos usarlo si queremos lograr anulación del método .
Puntos para recordar
- El constructor no se puede heredar en Java.
- Los miembros privados no se heredan en Java.
- La herencia cíclica no está permitida en Java.
- Asigne referencia principal a objetos secundarios.
- Los constructores se ejecutan debido a super() presente en el constructor.
Tipos de herencia
Java admite los siguientes cuatro tipos de herencia:
- Herencia única
- Herencia multinivel
- Herencia jerárquica
- Herencia híbrida
Nota: Java no admite la herencia múltiple.
Analicemos cada uno con el ejemplo adecuado.
Herencia única
En la herencia única, una subclase se deriva de una sola superclase. Hereda las propiedades y el comportamiento de una clase monoparental. A veces también se le conoce como herencia simple .
En la figura anterior, Empleado es una clase principal y Ejecutivo es una clase secundaria. La clase Ejecutiva hereda todas las propiedades de la clase Empleado.
Implementemos el mecanismo de herencia única en un programa Java.
Executive.java
class Employee { float salary=34534*12; } public class Executive extends Employee { float bonus=3000*6; public static void main(String args[]) { Executive obj=new Executive(); System.out.println('Total salary credited: '+obj.salary); System.out.println('Bonus of six months: '+obj.bonus); } }
Producción:
Total salary credited: 414408.0 Bonus of six months: 18000.0
Herencia multinivel
En herencia multinivel , una clase se deriva de una clase que también se deriva de otra clase se denomina herencia multinivel. En palabras simples, podemos decir que una clase que tiene más de una clase principal se llama herencia multinivel. Tenga en cuenta que las clases deben ser de diferentes niveles. Por lo tanto, existe una única clase base y una única clase derivada, pero múltiples clases base intermedias.
comentario multilínea de powershell
En la figura anterior, la clase Marcas hereda los miembros o métodos de la clase Estudiantes. La clase Deportes hereda los miembros de la clase Marcas. Por lo tanto, la clase Estudiante es la clase principal de la clase Marcas y la clase Marcas es la clase principal de la clase Deportes. Por lo tanto, la clase Deportes hereda implícitamente las propiedades del Estudiante junto con la clase Marcas.
Implementemos el mecanismo de herencia multinivel en un programa Java.
MultilevelInheritanceExample.java
//super class class Student { int reg_no; void getNo(int no) { reg_no=no; } void putNo() { System.out.println('registration number= '+reg_no); } } //intermediate sub class class Marks extends Student { float marks; void getMarks(float m) { marks=m; } void putMarks() { System.out.println('marks= '+marks); } } //derived class class Sports extends Marks { float score; void getScore(float scr) { score=scr; } void putScore() { System.out.println('score= '+score); } } public class MultilevelInheritanceExample { public static void main(String args[]) { Sports ob=new Sports(); ob.getNo(0987); ob.putNo(); ob.getMarks(78); ob.putMarks(); ob.getScore(68.7); ob.putScore(); } }
Producción:
registration number= 0987 marks= 78.0 score= 68.7
Herencia jerárquica
Si varias clases se derivan de una única clase base, se llama herencia jerárquica .
listado de java
En la figura anterior, las clases Ciencias, Comercio y Artes heredan una clase monoparental denominada Estudiante.
Implementemos el mecanismo de herencia jerárquica en un programa Java.
HierarchicalInheritanceExample.java
//parent class class Student { public void methodStudent() { System.out.println('The method of the class Student invoked.'); } } class Science extends Student { public void methodScience() { System.out.println('The method of the class Science invoked.'); } } class Commerce extends Student { public void methodCommerce() { System.out.println('The method of the class Commerce invoked.'); } } class Arts extends Student { public void methodArts() { System.out.println('The method of the class Arts invoked.'); } } public class HierarchicalInheritanceExample { public static void main(String args[]) { Science sci = new Science(); Commerce comm = new Commerce(); Arts art = new Arts(); //all the sub classes can access the method of super class sci.methodStudent(); comm.methodStudent(); art.methodStudent(); } }
Producción:
The method of the class Student invoked. The method of the class Student invoked. The method of the class Student invoked.
Herencia híbrida
Los medios híbridos constan de más de uno. La herencia híbrida es la combinación de dos o más tipos de herencia.
En la figura anterior, GrandFather es una superclase. La clase Padre hereda las propiedades de la clase Abuelo. Ya que Padre y Abuelo representan herencia única. Además, la clase Padre es heredada por la clase Hijo e Hija. Así, el Padre se convierte en la clase parental del Hijo y la Hija. Estas clases representan la herencia jerárquica. Combinados, denota la herencia híbrida.
Implementemos el mecanismo de herencia híbrida en un programa Java.
patrón de diseño del constructor
Daughter.java
//parent class class GrandFather { public void show() { System.out.println('I am grandfather.'); } } //inherits GrandFather properties class Father extends GrandFather { public void show() { System.out.println('I am father.'); } } //inherits Father properties class Son extends Father { public void show() { System.out.println('I am son.'); } } //inherits Father properties public class Daughter extends Father { public void show() { System.out.println('I am a daughter.'); } public static void main(String args[]) { Daughter obj = new Daughter(); obj.show(); } }
Producción:
I am daughter.
Herencia múltiple (no compatible)
Java no admite herencias múltiples debido a la ambigüedad. Por ejemplo, considere el siguiente programa Java.
Demo.java
class Wishes { void message() { System.out.println('Best of Luck!!'); } } class Birthday { void message() { System.out.println('Happy Birthday!!'); } } public class Demo extends Wishes, Birthday //considering a scenario { public static void main(String args[]) { Demo obj=new Demo(); //can't decide which classes' message() method will be invoked obj.message(); } }
El código anterior genera un error porque el compilador no puede decidir qué método message() se va a invocar. Por esta razón, Java no admite herencias múltiples a nivel de clase, pero se puede lograr mediante una interfaz .