La herencia consiste en la capacidad para crear nuevas clases a partir de clases existentes.
La herencia permite la reutilización de software en la cual las nuevas clases heredan datos y funciones miembro de una clase que se denomina clase base(padre o superclase). La nueva clase se llama la clase derivada (hija o subclase).
C++ permite solo la herencia simple cada clase derivada solo contiene una clase base.
Los accesos en una clase, cuando el acceso private ( privado) de una clase base, solo podran tener acceso por medio de las funciones miembros o amigas de la clase.
Los miembros public de una clase base son accesibles para todas las funciones en el programa.
El acceso protected (protegido) de la clase base mediante funciones miembros y amigas de la clase base y también por la clase derivada.
class nombreClaseDerivada: accesoClase nombreClaseBase
{
// se heredan los datos y funciones miembro de circulo
//se agregan los datos adicionales y funciones miembro
};
Miembro de la Acceso de la Miembro de la
clase base clase derivada clase derivada
protected public protected
public protected protected
public public public
public protected protected
protected protected protected
protected private private
private private no se puede accesar
private public no se puede accesar
private protected no se puede accesar
Ejemplo CodeBlocks
#include <iostream>
using namespace std;
class Uno
{
protected:
int x;
public:
Uno(int =1);
void estUno(int x);
int obtenerUno();
void mostrarUno();
};
Uno::Uno(int val)
{
x=val;
}
void Uno::estUno(int val)
{
x=val;
}
int Uno::obtenerUno()
{
return x;
}
void Uno::mostrarUno()
{
cout<<" x= "<<x<<endl;
}
class Dos:public Uno
{
protected:
int y;
public:
Dos(int =1, int =1);
void estDos(int ,int);
int obtenerDos();
void mostrarDos();
};
Dos::Dos(int val,int val2)
{
x=val;
y=val2;
}
void Dos::estDos(int val,int val2)
{
x=val;
y=val2;
}
int Dos::obtenerDos()
{
return y;
}
void Dos::mostrarDos()
{
cout<<"\n\nX= "<<x<<endl;
cout<<"Y="<<y<<endl;
}
int main()
{
Uno obj1(1);
obj1.estUno(10);
obj1.mostrarUno();
Dos obj2(2,3);
obj2.mostrarDos();
return 0;
}
No hay comentarios:
Publicar un comentario