Herencia
La herencia es un mecanismo que
permite la definición de una clase a partir de la definición de otra ya
existente. La herencia permite compartir automáticamente métodos y datos entre
clases, subclases y objetos.
La herencia está fuertemente ligada a
la reutilización del código en la POO. Esto es, el código de cualquiera de las
clases puede ser utilizado sin más que crear una clase derivada de ella, o bien
una subclase.
Hay dos tipos de herencia: Herencia Simple y Herencia Múltiple. La primera indica que se pueden definir nuevas clases solamente a partir de una clase inicial mientras que la segunda indica que se pueden definir nuevas clases a partir de dos o más clases iniciales. Java sólo permite herencia simple
Hay dos tipos de herencia: Herencia Simple y Herencia Múltiple. La primera indica que se pueden definir nuevas clases solamente a partir de una clase inicial mientras que la segunda indica que se pueden definir nuevas clases a partir de dos o más clases iniciales. Java sólo permite herencia simple
Herencia Simple La herencia en
C++ es un mecanismo de abstracción creado para poder facilitar, y mejorar el
diseño de las clases de un programa. Con ella se pueden crear nuevas clases a
partir de clases ya hechas, siempre y cuando tengan un tipo de relación
especial. En la herencia, las clases derivadas “heredan” los datos y las
funciones miembro de las clases base, pudiendo las clases derivadas redefinir
estos comportamientos (polimorfismo) y añadir comportamientos nuevos propios de
las clases derivadas. Para no romper el principio de encapsulamiento (ocultar
datos cuyo conocimiento no es necesario para el uso de las clases), se
proporciona un nuevo modo de visibilidad de los datos/funciones: “protected”.
Cualquier cosa que tenga visibilidad protected se comportará como pública en la
clase Base y en las que componen la jerarquía de herencia, y como privada en
las clases que NO sean de la jerarquía de la herencia. Antes de utilizar la
herencia, nos tenemos que hacer una pregunta, y si tiene sentido, podemos intentar
usar esta jerarquía: Si la frase <claseB> ES-UN <claseA> tiene
sentido, entonces estamos ante un posible caso de herencia donde clase A será
la clase base y clase B la derivada. Ejemplo: clases Barco, Acorazado,
Carguero, etc… un Acorazado ES-UN Barco, un Carguero ES-UN Barco, un
Trasatlántico ES-UN Barco, etc… En este ejemplo tendríamos las cosas generales
de un Barco (en C++) class Barco {
protected:
char* nombre;
float peso;
public:
//Constructores y demás funciones básicas de barco
}; y
ahora las características de las clases derivadas, podrían (a la vez que
heredan las de barco) añadir cosas propias del subtipo de barco que vamos a
crear, por ejemplo: Class Carguero: public Barco { // Esta es la manera de
especificar que hereda de Barco
private:
float carga;
//El resto de cosas
};
Class
Acorazado: public Barco {
private:
int numeroArmas;
int Soldados;
// Elresto de cosas
}; Por
último, hay que mencionar que existen 3 clases de herencia que se diferencian
en el modo de manejar la visibilidad de los componentes de la clase resultante:
• Herencia publica (class Derivada: public Base ) : Con este tipo de herencia
se respetan los comportamientos originales de las visibilidades de la clase
Base en la clase Derivada. • Herencia privada (clase Derivada: private Base) :
Con este tipo de herencia todo componente de la clase Base, será privado en la
clase Derivada (ojo! siempre será privado aunque ese dato fuese público en la
clase Base) • Herencia protegida (clase Derivada: protected Base) : Con este
tipo de herencia, todo componente publico y protegido de la clase Base, será
protegido en la clase Derivada, y los componentes privados, siguen siendo
privados. Herencia Múltiple La herencia múltiple es el mecanismo que permite al
programador hacer clases derivadas a partir, no de una sola clase base, sino de
varias. Para entender esto mejor, pongamos un ejemplo: Cuando ves a quien te
atiende en una tienda, como persona que es, podrás suponer que puede hablar,
comer, andar, pero, por otro lado, como empleado que es, también podrás suponer
que tiene un jefe, que puede cobrarte dinero por la compra, que puede
devolverte el cambio, etc… Si esto lo trasladamos a la programación sería
herencia múltiple (clase empleado_tienda): class Persona {
…
Hablar();
Caminar();
…
};
class
Empleado {
Persona jefe;
int sueldo;
Cobrar();
…
};
class
empleado_tienda: public Persona, Empleado {
…
Almacenar Stock();
Comprobar Existencias?();
…
}; Por
tanto, es posible utilizar más de una clase para que otra herede sus
características.
haa bueno me párese muy interesante tu tema :)
ResponderEliminarhaa bueno me párese muy interesante tu tema :)
ResponderEliminar👍
Eliminar👍
Eliminar👍
Eliminarhola como están oigan como puedo encontrar que es simple en programación orientada a objetos
ResponderEliminarhola como están oigan como puedo encontrar que es simple en programación orientada a objetos
ResponderEliminar