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 0-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 0-1: Kunde.h
Abgeleitete Klasse in KundeErweitert.h
class KundeErweitert : protected Kunde
{
public:
KundeErweitert(int kundennummer) : Kunde(kundennummer)
{
}
void zeigeKundennummer()
{
cout<<kundennummer<<endl;
}
};
Code 0-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 0-3: main.cpp
|
Obiges Beispiel gezipt.