La herencia es la capacidad que tienen algunas clases (clase derivada) de heredar miembros y funciones de otras clases padre (clase base) y así crear jerarquías en nuestro programa.
Una parte importante en la herencia es el tipo de acceso que se tiene a la información y miembros de la clase, estos son los siguientes:
Para entender mejor este concepto hagamos un ejemplo:
Lo primero que debemos hacer es detectar características en común.
Hay que tener en cuenta que la herencia se utiliza principalmente en la resolución de problemas complejos que buscan eficacia en el programa mediante la reducción de código.
Para este ejemplo tomaremos una temática de mascotas donde el común es que todos son animales, todos ellos tienen una dieta alimenticia que podemos agrupar en 3 clasificaciones básicas.
Para este ejemplo los clasificaremos en Herbívoro, Carnívoro y Omnívoro.
Veremos que existen más ventajas, aunque este modo de diseñar aplicaciones tiene también sus inconvenientes, sobre todo si diseñamos mal alguna clase.
Veamos un ejemplo sencillo basado en la idea del punto anterior:
// Clase base Animal:class Animal {
public:
Animal(char *nombre, int edad);
constchar *LeerNombre(char *nombre)const;
intLeerEdad()const;
voidCambiarNombre(constchar *nombre);
voidCambiarEdad(int edad);
protected:
char n[40];
int e;
};
// Clase derivada Hervivoro:class Hervivoro : public Animal {
public:
Hervivoro(char *nombre, int edad, float tamaño);
float LeerTamaño() const;
void CambiarTamaño(constfloat tamaño);
protected:
float TamañoAdulto;
};