Operaciones: Herencia y Polimorfismo

Hablemos en profundidad de la herencia y el polimorfismo juntos

En este blog, Voy a escribir un poco de profundidad dentro del concepto más importante de la programación orientada a objetos llamado herencia. Usted puede encontrar el artículo en todas partes sobre este tema. Pero he encontrado algo que falta juntos. Esto significa que muchos artículos sólo definen la herencia y los ejemplos, no explican cómo implementar en proyectos de la vida real. Incluso, en la herencia, otro concepto también viene con. Se llama polimorfismo. Así que digo que si usted quiere entender completamente acerca de la herencia que tenemos que entender el concepto de polimorfismo juntos. También trato de describir cuando necesitamos heredar y por qué. Aquí, tomo todos los ejemplos en el lenguaje de programación java porque creo que da mejor ejemplo claro para entender. Comencemos con la definición:

Definición:

  1. Herencia : Es un mecanismo en el que un objeto adquiere todas las propiedades y comportamientos de un objeto padre. Es una parte importante de la POO (sistema de programación orientado a objetos).
  • Subclase (hijo) – la clase que hereda de otra clase. También se llama clase derivada, clase extendida o clase hija.
  • Superclase (padre) – la clase de la que se hereda.También se llama clase base o clase padre.
  • Ejemplo:

class Animal {
public void animalSound() {
System.out.println("The animal makes a sound");
}
}
class Pig extends Animal {
public void animalSound() {
System.out.println("The pig says: wee wee");
}
}
class Dog extends Animal {
public void animalSound() {
System.out.println("The dog says: bow wow");
}
}

1.1. Por qué utilizar la herencia en java

  • Para el overriding de métodos (así se puede lograr el polimorfismo en tiempo de ejecución).
  • Para la reutilización del código.
    • 1.2. Tipos de herencia en java:

      a. Herencia simple

      b. Herencia multinivel

      c. Herencia jerárquica

      d. Herencia múltiple

      e. Herencia híbrida

      Las imágenes de todos los tipos dan más claridad . Estas son

      2. Polimorfismo:

      El polimorfismo es la capacidad de que algunas estructuras de código en un lenguaje OOP sean tratadas como estructuras diferentes en tiempo de ejecución.

      2.1 Polimorfismo de objetos:

      Cuando se habló de la herencia, se explicó que cuando la clase B hereda de la clase A, un objeto de la clase B también se considera un objeto de la clase A. Eso es el polimorfismo de objetos.

      2.2 Polimorfismo de métodos

      En la mayoría de los lenguajes de POO, los métodos se diferencian entre sí por su firma, que es una combinación del nombre del método, y los tipos, número y orden de los parámetros que se pasan. Este sistema de diferenciación nos permite anular y sobrecargar métodos.

      2.3 Tipo de polimorfismo

      2.3.1 Polimorfismo en tiempo de compilación

      2.3.2 Polimorfismo en tiempo de ejecución

      El ejemplo anterior , public void animalSound() es polimorfismo en tiempo de ejecución. La sobrecarga de métodos se llama polimorfismo en tiempo de compilación, porque estos métodos son diferenciados por el compilador en base a los parámetros que se les da.

      Implementación:

      Todo lo anterior es definición de herencia y polimorfismo . Lo podemos encontrar en cualquier sitio, y deberíamos conocerlo también. Pero, aquí, quiero discutir la implementación de estos conceptos en el nivel de proyecto. También quiero decir acerca de la relación entre dos o más clases, mientras que una clase hereda otra clase. En realidad, la herencia significa que se establece una relación entre ellos. Hay dos tipos de relación. La herencia presenta la relación «IS-A» y otra es la relación de composición. Veamos un ejemplo antes de continuar.

class Animal {
public void animalSound() {
System.out.println("The animal makes a sound");
}
}
class Vehicle extends Animal {
public void vehicleSound() {
System.out.println("Vehicle Sound !!");
}
}

En el ejemplo anterior, tenemos dos clases Animal y Vehículo donde la clase Vehículo hereda la clase Animal. Es crear cualquier significado lógico por la herencia a pesar de que no hay ningún error técnicamente. Obviamente, no hay ningún significado. Por lo tanto, siempre debemos heredar de manera adecuada de lo que podemos establecer una relación adecuada. Veamos otro ejemplo

class Animal {
public void animalSound() {
System.out.println("The animal makes a sound");
}
}class Dog extends Animal {
public void animalSound() {
System.out.println("Dog Sound !!");
}
}

Ahora la clase perro hereda la clase animal. Entonces el objeto de la clase perro también hereda todas las propiedades y el comportamiento de la clase animal que también dan un significado lógico. Y esto se llama relación » IS-A». Pero cuando creamos un objeto de cualquier clase en otra clase, entonces la relación entre el objeto creado y la clase se llama «HAS-A» (composición).

Ejemplo:

class Dog {
public void animalSound() {
System.out.println("Dog sound");
}
}class Person {
public static void main(String args) { Dog dogObj = new Dog(); // "HAS-A" relationship dogObj.animalSound();
}
}

Puntos importantes en java :

Aquí, he utilizado todos los ejemplos en el lenguaje de programación java. Así que tenemos que recordar algunos puntos importantes en java durante el concepto de herencia.

  • Java no permite la herencia múltiple e híbrida en las clases como C++ porque Java se confunde para anular el método (run -time Polymorphism) mientras el mismo nombre de método aparece en ambas clases. Ejemplo
class Animal {
public void animalSound() {
System.out.println("The animal makes a sound");
}
}class Mammal {
public void animalSound() {
System.out.println("The mammal makes a sound");
}}// error , multiple class inheritanceclass Dog extends Animal,Mammal {
public void animalSound() {
System.out.println("Dog Sound !!");
}
}
  • Pero Java puede heredar múltiples Interfaces.

Conclusión:

La herencia y el polimorfismo son conceptos muy importantes que se utilizan en cada paso de los proyectos. Necesitamos heredar otra clase definida por el usuario o una clase incorporada para ahorrar tiempo y gestionar adecuadamente el código. Sin estos conceptos, no podemos hacer ningún proyecto de lenguaje de programación orientado a objetos. Y también se centró en la aplicación, la relación tema de la definición. Debemos ser capaces de distinguir las clases, objetos, entidades, comportamientos, propiedades y la relación entre ellos durante la recopilación de los requisitos de los usuarios. Entonces, podemos organizar la codificación y los proyectos de manera adecuada.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *