Herencia
C++
Expresion
Se expresa en la implementación de una clase mediante el uso del operador dos puntos : seguido del tipo de herencia y del nombre de la clase base de la que se busca heredar.
Herencia publica
class ClaseDerivada : public ClaseBase
Herencia privada
class ClaseDerivada : private ClaseBase
Herencia protegida
class ClaseDerivada : protected ClaseBase
Codigo
Los constructores no se heredan
Ejemplo
Clase Padre
class Figura{
protected:
float x;
public:
Figura(float cx=0){
x = cx;
}
virtual float Perimetro() = 0;
virtual float Area() = 0;
};
Clase Derivada
class Cuadrado: public Figura
{
public:
Cuadrado(float lado){
x = lado;
}
float Perimetro(){
return 4 * x;
}
float Area(){
return x * x;
}
};
Definicion
Permite la reusabilidad de variables y funcionalidades que se han definido en otras clases.
Clase Base
Una clase que va a heredar sus propiedades (variables) y funcionalidades (métodos) a otras clases
Clase Derivada
Una clase que se implementa mediante la reutilización de las propiedades y funcionalidades que se heredan de una (o varias) clase base.
Reutilización:
Cuando queremos crear una clase nueva y ya hay una clase que incluye parte del código que queremos, podemos derivar nuestra nueva clase de la clase existente. Al hacer esto, estamos reutilizando los campos/atributos y métodos de la clase existente.
Java
Expresión
Para indicar que la clase B (clase derivada)
hereda de la clase A (clase base)
se emplea la palabra reservada extends en la cabecera de la declaración de la clase descendiente
Herencia publica
public class ClaseB extends ClaseA
Herencia privada
private class ClaseB extends ClaseA
Herencia protegida
protected class ClaseB extends ClaseA
Codigo
Los constructores no se heredan
Ejemplo
Clase Padre
class DosDimensiones{
private double base;
private double altura;
void mostrarDimension(){
System.out.println("La base y altura es: "+base+" y "+altura);
}
}
Clase Derivada
class Triangulo extends DosDimensiones{
String estilo;
double area(){
return base*altura/2; //Error! no se puede acceder
}
void mostrarEstilo(){
System.out.println("Triangulo es: "+estilo);
}
}
Tipos de Herencia
Herencia pública
Todos los miembros públicos y protegidos de la clase base conservan esos mismos niveles de acceso respectivamente en las clases derivadas.
Herencia protegida
Todos los miembros públicos de la clase base adquieren el nivel de acceso protegido en las clases derivadas, mientras que los miembros protegidos conservan su nivel de acceso
Herencia privada
Todos los miembros públicos y protegidos de la clase base adquieren el nivel de acceso privado en las clases derivadas. De ahí se desprende que una clase derivada que haya heredado mediante herencia privada no puede heredar a otras clases los miembros que ha heredado de otras clases.