Uno
de los problemas que aparece con la herencia es el
del control del acceso a los datos. ¿Puede
una función de una clase derivada acceder a
los datos privados de su clase base?
En principio una clase no puede acceder a los datos privados de
otra, pero podría ser muy conveniente que una clase
derivada accediera a todos los datos de su clase base.
Para hacer posible esto, existe el tipo de dato protected.
Este tipo de datos es privado para todas aquellas
clases que no son derivadas, pero público para
una clase derivada de la clase en la que se ha definido
la variable como protected.
Por
otra parte, el proceso de herencia puede efectuarse de dos formas
distintas: siendo la clase base public o private para
la clase derivada. En el caso de que la clase base sea public
para la clase derivada, ésta hereda los miembros
public y protected de la clase base como miembros
public y protected, respectivamente. Por el contrario,
si la clase base es private para la clase derivada,
ésta hereda todos los datos de la clase base como private.
Como
ejemplo, se puede pensar en dos tipos de cuentas bancarias que comparten
algunas características y que también tienen algunas
diferencias. Ambas cuentas tienen un saldo, un interés
y el nombre del titular de la cuenta. La cuenta
joven es un tipo de cuenta que requiere la edad del
propietario, mientras que la cuenta empresarial
necesita el nombre de la empresa. El problema podría
resolverse estableciendo una clase base llamada C_Cuenta
y creando dos tipos de cuenta derivados de dicha clase base.
Para
indicar que una clase deriva de otra es necesario
indicarlo en la definición de la clase derivada,
especificando el modo -public o private- en que deriva
de su clase base:
|