Herencia :
La herencia es aquella en la que se crea una nueva clase que hereda las propiedades de la clase ya existente. Admite el concepto de reutilización de código y reduce la longitud del código en la programación orientada a objetos.
Los tipos de herencia son:
- herencia única
- Herencia multinivel
- Herencia múltiple
- herencia híbrida
- herencia jerárquica
Ejemplo de Herencia:
C++
#include "iostream" using namespace std; class A { int a, b; public: void add(int x, int y) { a = x; b = y; cout << (a + b) << endl; } }; class B : public A { public: void print(int x, int y) { add(x, y); } }; int main() { B b1; b1.print(5, 6); }
Java
class A { int a, b; public void add(int x, int y) { a = x; b = y; System.out.println("addition of a + b is:" + (a + b)); } } class B extends A { public void sum(int x, int y) { add(x, y); } // Driver Code public static void main(String[] args) { B b1 = new B(); b1.sum(5, 6); } }
Producción:
addition of a+b is:11
Aquí, la clase B es la clase derivada que hereda la propiedad ( método de adición ) de la clase base A.
Polimorfismo :
el polimorfismo es aquel en el que podemos realizar una tarea de múltiples formas o formas. Se aplica a las funciones o métodos. El polimorfismo permite que el objeto decida qué forma de la función implementar en tiempo de compilación y en tiempo de ejecución.
Los tipos de polimorfismo son:
- Polimorfismo en tiempo de compilación (sobrecarga de métodos)
- Polimorfismo en tiempo de ejecución (anulación de métodos)
Ejemplo de polimorfismo:
C++
#include "iostream" using namespace std; class A { int a, b, c; public: void add(int x, int y) { a = x; b = y; cout << "addition of a+b is:" << (a + b) << endl; } void add(int x, int y, int z) { a = x; b = y; c = z; cout << "addition of a+b+c is:" << (a + b + c) << endl; } virtual void print() { cout << "Class A's method is running" << endl; } }; class B : public A { public: void print() { cout << "Class B's method is running" << endl; } }; int main() { A a1; // method overloading (Compile-time polymorphism) a1.add(6, 5); // method overloading (Compile-time polymorphism) a1.add(1, 2, 3); B b1; // Method overriding (Run-time polymorphism) b1.print(); }
Java
class A { int a, b, c; public void add(int x, int y) { a = x; b = y; System.out.println("addition of a+b is:" + (a + b)); } public void add(int x, int y, int z) { a = x; b = y; c = z; System.out.println("addition of a+b+c is:" + (a + b + c)); } public void print() { System.out.println("Class A's method is running"); } }; class B extends A { public void print() { System.out.println("Class B's method is running"); } // Driver Code public static void main(String[] args) { A a1 = new A(); // method overloading (Compile-time polymorphism) a1.add(6, 5); // method overloading (Compile-time polymorphism) a1.add(1, 2, 3); B b1 = new B(); // Method overriding (Run-time polymorphism) b1.print(); } }
Producción:
addition of a+b is:11 addition of a+b+c is:6 Class B's method is running
Diferencia entre herencia y polimorfismo:
S.NO | Herencia | Polimorfismo |
---|---|---|
1. | La herencia es aquella en la que se crea una nueva clase (clase derivada) que hereda las características de la clase ya existente (clase base). | Mientras que el polimorfismo es aquello que se puede definir en múltiples formas. |
2. | Básicamente se aplica a las clases. | Mientras que básicamente se aplica a funciones o métodos. |
3. | La herencia admite el concepto de reutilización y reduce la longitud del código en la programación orientada a objetos. | El polimorfismo permite que el objeto decida qué forma de la función implementar en tiempo de compilación (sobrecarga), así como en tiempo de ejecución (anulación). |
4. | La herencia puede ser única, híbrida, múltiple, jerárquica y multinivel. | Mientras que puede ser polimorfismo en tiempo de compilación (sobrecarga), así como polimorfismo en tiempo de ejecución (anulación). |
5. | Se utiliza en el diseño de patrones. | Si bien también se utiliza en el diseño de patrones. |
6. |
Ejemplo : La clase moto se puede heredar de la clase de vehículos de dos ruedas, que a su vez podría ser una subclase de vehículos. |
Ejemplo : La bicicleta de clase puede tener el nombre de método set_color(), que cambia el color de la bicicleta según el nombre del color que haya ingresado. |