kramann.info
© Guido Kramann

Login: Passwort:










7.2 Vererbung mit Modifikator protected

class B : protected A

Ort und Modifikator des Elements Zugriff von Objekt der Klasse A: Zugriff von Objekt der KLasse B: Zugriff von Außen:
private in A ja nein nein
protected in A ja JA nein
public in A ja ja NEIN
private in B nein ja nein
protected in B nein ja nein
public in B nein ja ja

Tabelle 7.2-1: protected-Vererbung

Beispiel für Vererbung mit Modifikator public

Basisklasse in Kunde.h
class Kunde
{
  public:       
    int kundennummer;

    Kunde(int kundennummer)
    {
        this->kundennummer = kundennummer;
    }
};
 

Code 7.2-1: Kunde.h

Abgeleitete Klasse in KundeErweitert.h
class KundeErweitert : protected Kunde
{
  public:  
    KundeErweitert(int kundennummer) : Kunde(kundennummer)
    {
    }
    
    void zeigeKundennummer()
    {
        cout<<kundennummer<<endl;
    }
}; 

Code 7.2-2: KundeErweitert.h

Hauptprogramm in main.cpp
#include<iostream>

using namespace std;

#include "Kunde.h"
#include "KundeErweitert.h"

int main(void)
{
    Kunde k(4711);
    KundeErweitert ke(815);
    
    cout<<"k.kundennummer="<<k.kundennummer<<endl;
    k.kundennummer = 815; //GEFÄHRLICH!!, bei ke nicht möglich!
    cout<<"k.kundennummer="<<k.kundennummer<<endl;
    //Die folgende Zeile geht wegen protected-Vererbung NICHT:
    //cout<<"ke.kundennummer="<<ke.kundennummer<<endl;

    cout<<"ke.zeigeKundennummer() liefert:"<<endl;
    ke.zeigeKundennummer();        

    system("PAUSE");
}
 

Code 7.2-3: main.cpp

  • Durch die protected-Vererbung wird es unmöglich bei KudeErweitert-Objekten von Außen die Kundennummer zu ändern.
Obiges Beispiel gezipt.