Herencia en C++ (Práctica 3)

camilocorreaUdeA
27.7K views

Open Source Your Knowledge, Become a Contributor

Technology knowledge has to be shared and made accessible for free. Join the movement.

Create Content

Redefinición de métodos

Los métodos que se heredan de una clase base no necesariamente deben conservar la misma definición/implementación en las clases derivadas, es decir, un método heredado puede ser redefinido en la clase derivada de modo que se conserve la misma firma (declaración) pero que el código que implementa la funcionalidad sea distinto, o bien agregue modificaciones a la implementación original de la clase base. Ejemplo:

Orden de ejecución de constructores y destructores en una clase derivada

Cuando se instancia un objeto del tipo de una clase derivada se ejecuta de manera implícita el constructor de la clase base justo antes de que se ejecute el constructor de la clase derivada. De manera análoga sucede con los destructores, pero en este caso se ejecuta primero el destructor de la clase derivada y luego el constructor de la clase base. El siguiente ejemplo ilustra el comportamiento descrito:

Tipos de herencia en C++ de acuerdo con la estructura de jerarquía

  • Herencia simple: Este tipo de herencia se da cuando una clase derivada hereda solo de una clase base y de igual modo la clase base no hereda a ninguna otra clase.
  • class BaseA
    {
    };
    
    class DerivadaBdeA: public BaseA
    {
    };
    
  • Herencia múltiple: Ocurre cuando una clase derivada hereda de más de una base clase al tiempo.
  • class BaseA
    {
    };
    
    class BaseB
    {
    };
    
    class DerivadaCdeAyB: public BaseA, public BaseB
    {
    };
    
  • Herencia multinivel: Este tipo de herencia se da cuando una clase derivada 'X' hereda de una clase base a través de otra clase intermediaria que actúa como clase derivada para la clase base original y como clase base para la clase derivada 'X'.
  • class BaseA
    {
    };
    
    class DerivadaBdeA: public BaseA
    {
    };
    
    class DerivadaCdeB: public DerivadaBdeA
    {
    };
    
  • Herencia jerárquica: Ocurre cuando varias clases derivadas heredan de una clase base en común.
  • class BaseA
    {
    };
    
    class DerivadaBdeA: public BaseA
    {
    };
    
    class DerivadaCdeA: public BaseA
    {
    };
    
  • Herencia híbrida: Este tipo de herencia ocurre cuando se combinan dos o más tipos de las herencias mencionadas anteriormente.
  • class BaseA
    {
    };
    
    class BaseB
    {
    };
    
    class DerivadaBdeA: public BaseA
    {
    };
    
    class DerivadaCdeAyB: public DerivadaBdeA, public BaseB
    {
    };
    
Open Source Your Knowledge: become a Contributor and help others learn. Create New Content