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
kramann.info
© Guido Kramann

Login: Passwort:




Vererbung mit Modifikator public

class B : public 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 ja
private in B nein ja nein
protected in B nein ja nein
public in B nein ja ja

Tabelle 0-1: public-Vererbung

Beispiel für Vererbung mit Modifikator public

Basisklasse in Mutter.h
class Mutter
{
  public:  
    double x;
    
    Mutter(double x)
    {
        this->x = x;
    }
    
    double getX()
    {
        return x;
    }
}; 

Code 0-1: Mutter.h

Abgeleitete Klasse in Tochter.h
class Tochter : public Mutter
{
  public:  
//Basis-Konstruktor wird aufgerufen:
    Tochter(double x) : Mutter(x)
    {
    }
    
    double quadrat()
    {
        return x*x;
    }
}; 

Code 0-2: Tochter.h

Hauptprogramm in main.cpp
#include<iostream>

using namespace std;

#include "Mutter.h"
#include "Tochter.h"

int main(void)
{
    Mutter m(4.0);
    Tochter n(9.0);
    
    cout<<"m.x="<<m.getX()<<endl;
    cout<<"n.x="<<n.getX()<<endl;
    cout<<"n.x*n.x="<<n.quadrat()<<endl;
    
    system("PAUSE");
} 

Code 0-3: main.cpp

  • Weil public vererbt wird, kann man von außen auch auf die public-get()-Methode der Objekte der Basisklasse zugreifen.
  • Dagegen kann niemals von einem Objekt der Basisklasse auf eine Methode oder ein Attribut der Objekte der abgeleiteten KLasse zugegriffen werden, wie die public-Methode quadrat().
  • Man beachte den Aufruf des Konstruktors der Basisklasse in Tochter.
Obiges Beispiel gezipt.