types inheritance c
Explore todos los tipos de herencia en C ++ con ejemplos.
En nuestro tutorial anterior, aprendimos sobre la herencia en C ++. Dependiendo de la forma en que se derive la clase o de cuántas clases base hereda una clase, tenemos los siguientes tipos de herencia:
- Herencia única
- Herencia múltiple
- Herencia multinivel
- Herencia jerárquica
- Herencia híbrida
=> Consulte aquí para explorar la lista completa de tutoriales de C ++.
Lo que vas a aprender:
Tipos de herencia
A continuación se muestra una representación gráfica de los diversos tipos de herencia.
Veremos cada tipo de herencia con ejemplos en las secciones siguientes.
# 1) Herencia única
En herencia única, una clase se deriva de una única clase base. Esto significa que solo hay una subclase derivada de una superclase.
La herencia única generalmente se declara de la siguiente manera:
|_+_|
A continuación se muestra un ejemplo completo de herencia única.
|_+_|Producción:
El perro tiene 4 patas
El perro tiene 1 cola
¡¡¡El perro ladra!!!
Tenemos una clase Animal como clase base de la que hemos derivado una subclase perro. La clase dog hereda todos los miembros de la clase Animal y se puede ampliar para incluir sus propias propiedades, como se ve en la salida.
La herencia única es la forma más simple de herencia.
# 2) Herencia múltiple
La herencia múltiple se representa gráficamente a continuación.
La herencia múltiple es un tipo de herencia en la que una clase deriva de más de una clase. Como se muestra en el diagrama anterior, la clase C es una subclase que tiene la clase A y la clase B como padre.
En un escenario de la vida real, un niño hereda de su padre y su madre. Esto puede considerarse como un ejemplo de herencia múltiple.
Presentamos el siguiente programa para demostrar la herencia múltiple.
|_+_|Producción:
Ingrese el Rollo No .: 25
Ingrese las dos calificaciones más altas: 40 50
Ingrese la nota de Actividades CoCurriculares: 30
Rollo No: 25
Puntuación total: 120
Notas medias: 40
En el ejemplo anterior, tenemos tres clases, es decir, student_marks, cocurricular_marks y Result. La clase student_marks lee la nota de la asignatura para el alumno. La clase cocurricular_marks lee las notas del estudiante en actividades cocurriculares.
La clase Result calcula las puntuaciones totales del alumno junto con las notas medias.
En este modelo, la clase de resultado se deriva de las calificaciones de los estudiantes y las calificaciones cocurriculares, ya que calculamos el resultado de la asignatura y las calificaciones de las actividades cocurriculares.
Esto exhibe múltiples herencias.
Problema del diamante
El problema del diamante se representa gráficamente a continuación:
cómo abrir un archivo .apk
Aquí, tenemos una clase infantil que hereda dos clases Padre y Madre. Estas dos clases, a su vez, heredan la clase Persona.
Como se muestra en la figura, la clase Niño hereda los rasgos de la clase Persona dos veces, es decir, una vez del Padre y la segunda de la Madre. Esto da lugar a ambigüedad ya que el compilador no comprende qué camino tomar.
Dado que este escenario surge cuando tenemos una herencia en forma de diamante, este problema se conoce como ' El problema del diamante ”.
El problema de Diamond implementado en C ++ da como resultado un error de ambigüedad en la compilación. Podemos resolver este problema haciendo que la clase base raíz sea virtual. Aprenderemos más sobre la palabra clave 'virtual' en nuestro próximo tutorial sobre polimorfismo.
# 3) Herencia multinivel
La herencia multinivel se representa a continuación.
En la herencia multinivel, una clase se deriva de otra clase derivada. Esta herencia puede tener tantos niveles siempre que nuestra implementación no se desvíe. En el diagrama anterior, la clase C se deriva de la clase B. La clase B, a su vez, se deriva de la clase A.
Veamos un ejemplo de herencia multinivel.
|_+_|Producción:
El cachorro tiene 4 patas
El cachorro tiene 1 cola
El cachorro ladra !!! ¡¡El cachorro llora !!
Aquí modificamos el ejemplo de Herencia simple de modo que hay una nueva clase Puppy que hereda de la clase Dog que a su vez hereda de la clase Animal. Vemos que la clase Puppy adquiere y usa las propiedades y métodos de las dos clases superiores.
# 4) Herencia híbrida
La herencia híbrida se muestra a continuación.
La herencia híbrida suele ser una combinación de más de un tipo de herencia. En la representación anterior, tenemos herencia múltiple (B, C y D) y herencia multinivel (A, B y D) para obtener una herencia híbrida.
Veamos un ejemplo de herencia híbrida.
|_+_|Producción:
Ingrese la identificación del estudiante y el nombre del estudiante 25 Ved
Ingrese 3 marcas de asunto: 89 88 87
Ingresar notas deportivas: 40
Puntuación total = 264
Puntuación media = 88
Promedio + notas deportivas = 128
Aquí tenemos cuatro clases, es decir, estudiante, calificaciones, deportes y resultado. Las calificaciones se derivan de la clase de estudiantes. El resultado de la clase se deriva de las calificaciones y los deportes, ya que calculamos el resultado a partir de las calificaciones de la materia y de las calificaciones deportivas.
La salida se genera creando un objeto de clase Result que ha adquirido las propiedades de las tres clases.
Tenga en cuenta que en la herencia híbrida también, la implementación puede resultar en un 'Problema de diamante' que se puede resolver utilizando la palabra clave 'virtual' como se mencionó anteriormente.
# 5) Herencia jerárquica
En la herencia jerárquica, más de una clase hereda de una sola clase base como se muestra en la representación anterior. Esto le da una estructura de jerarquía.
A continuación se muestra el ejemplo que demuestra la herencia jerárquica.
|_+_|Producción:
Ingrese el largo y ancho de un rectángulo: 10 5
Área del rectángulo = 50
Introduzca la base y la altura del triángulo: 4 8
Área del triángulo = 16
Ingrese la longitud de un lado del cuadrado: 5
Área del cuadrado = 20
El ejemplo anterior es un ejemplo clásico de la clase Shape. Tenemos una clase base Shape y tres clases, es decir, rectángulo, triángulo y cuadrado se derivan de ella.
Tenemos un método para leer datos en la clase Shape, mientras que cada clase derivada tiene su propio método para calcular el área. En la función principal, leemos los datos de cada objeto y luego calculamos el área.
Conclusión
En comparación con los otros lenguajes de programación, el lenguaje C ++ admite todos los tipos de herencia. De hecho, podemos decir que C ++ tiene muy buen soporte para la herencia. Podemos modelar problemas en tiempo real de forma más eficaz utilizando C ++.
En este tutorial, hemos visto todos los tipos de herencia admitidos por C ++.
Leer también = >> Tipos de herencia en Java
En nuestro próximo tutorial, aprenderemos más sobre la función de polimorfismo de OOP.
=> Consulte la serie completa de formación GRATUITA de C ++ aquí.
Lectura recomendada
- Herencia en C ++
- Tipos de datos C ++
- Tipos de riesgos en proyectos de software
- Tipos de datos de Python
- La mejor serie de tutoriales de C # GRATIS: la guía definitiva de C # para principiantes
- Tipos de bucle de shell de Unix: bucle while, bucle for, bucle hasta en Unix
- Diferentes tipos de comparadores proporcionados por Mockito
- 7 tipos de errores de software que todo evaluador debe conocer