Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- using namespace std;
- class Fahrzeug //-->Abstrakte Klasse
- {
- public:
- string getName() { return name; } //Die Kind-Klassen erben diese Methode und initalisieren den Namen der jeweiligen Kind-klassen
- virtual void modellName()=0; //in der Abstrakten Klasse kann kein Objekt erstellt werden. Ein Objekt kann nur von einer Kind-Klasse über Methoden definiert werden daher 0-->Keine Implementierung
- //alle virtuellen Methoden müssen in der Kind-Klasse definiert werden
- protected: //muss protected sein damit die Kindklasse ebenso auf diese Eigenschaft zugreifen kann.
- string name;
- };
- class BMW : public Fahrzeug //Abgeleitete Klasse Klasse BMW erbt von Klasse Fahrzeug
- //Konstruktoren können nie Vererbt!!!! werden
- {
- public:
- BMW() { name = "BMW: "; } //Konstruktor
- //"Eigenschaften" wie "Name" können nur in der Klasse initalisiert werde in der diese definiert sind.--> Eigenschaft "Name" ist in der "Fahrzeug"-Klasse definiert
- void modellName() { cout << "M3" << endl; }
- };
- class AUDI : public Fahrzeug //Abgeleitete Klasse
- {
- public:
- AUDI() { name = "AUDI: "; } //Konstruktor
- void modellName() { cout << "A5" << endl; }
- };
- void Ausgabe(Fahrzeug &typ) //Referenzen &typ(<--name kann selber erfunden werden) es wird erst vor der Methode entschieden welche Klasse aufgeruten wird
- { //Polymorphie (Vielseitigkeit)
- cout << typ.getName(); //typ. --> enthält das jewilige Objekt Methode wird in Fahrzeug aufgerufen
- typ.modellName(); //Methode wird in dem jeweiligen Klasse aufgerufen
- cout << endl;
- }
- int main() {
- BMW bmw;
- AUDI audi;
- Ausgabe(bmw);
- Ausgabe(audi);
- /* system("Pause");*/
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement