kramann.info
© Guido Kramann

Login: Passwort:










Informatik3
1 Vom_struct_zur_Klasse
..1.1 Vom_struct_zur_Klasse
..1.2 struct_Programm
..1.3 Klassen_Programm
..1.4 Offene_Fragen
..1.5 Historie
..1.6 Objektabstraktion
..1.7 OO_Kundenverwaltung
..1.8 Objektfaehigkeiten
..1.9 Formatierung
..1.10 Motivation
..1.11 Uebung1
..1.12 Uebung2
2 UML
..2.1 Volumenberechnung
..2.2 UML_Klassendiagramm
..2.3 Konstruktor
..2.4 Statische_Variable
3 Strings
..3.1 Klassenbibliotheken
..3.2 stringUML
..3.3 Uebung3
4 Initialisierungen
4 bluej
5 Zeiger_und_Arrays
..5.1 Zeiger
..5.2 Zeiger_und_Funktion
..5.3 Uebung4
6 Vererbung
..6.1 MesswerteUML
..6.2 MesswerteProgramm
..6.3 VererbungsProgramm
..6.4 Vector
..6.5 Uebung
7 Modifikatoren
..7.1 public_Vererbung
..7.2 protected_Vererbung
8 Listen_und_Templates
..8.1 Containertypen
....8.1.1 ListeUML
....8.1.2 ListeProgramm
..8.2 Templates
....8.2.1 Listentemplate
....8.2.2 STLvectorTemplate
..8.3 Uebung5
..8.4 Uebung6
..8.5 Uebung7
9 Java
..9.1 Uebung
..9.2 GettingStarted
..9.3 Animation
..9.4 Hybrid
..9.5 Threads
10 Delegation
11 LayoutProjekt
12 Fenster
13 Uebung
14 Zwischenprojekt
..14.1 Befehle
..14.2 Planung
..14.3 JNI
..14.4 JNIumsetzen
..14.5 Anwendungsklasse
..14.6 GUI01
..14.7 GUI02
15 Rasterlayout
..15.1 Bilder_Packages
..15.2 interfaces
..15.3 ArrayList
..15.4 clone
..15.5 Uebung
16 Nuetzliches
..16.1 Threads
..16.2 Animation
..16.3 RungeKutta
..16.4 Loesungsansatz
..16.5 Internetprogrammierung
....16.5.1 Codegenerierung
....16.5.2 PHP_Programmierung
....16.5.3 PHP_OOP
....16.5.4 Java
17 Algorithmen
..17.1 RungeKutta
..17.2 Loesungsansatz
..17.3 Evoopt
..17.4 Uebung12
..17.5 Uebung8_2014
..17.6 Ausdruecke
18 Uebung10
19 UML_ALT
..19.1 Flaechenberechnung
..19.2 UML_Flaechenberechnung
..19.3 Implementierung
..19.4 ListeUML
..19.5 ListenImplementierung
..19.6 Anwendung

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.