miércoles, 23 de septiembre de 2015

Herencia de clase

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