PRJ 2007/1 Stefan Dissmann Vererbung Spezialisierung von Klassen in JAVA möglich durch Konzept der...

57
PRJ 2007/1 Stefan Dissmann Vererbung Spezialisierung von Klassen in JAVA möglich durch Konzept der Vererbung

Transcript of PRJ 2007/1 Stefan Dissmann Vererbung Spezialisierung von Klassen in JAVA möglich durch Konzept der...

Page 1: PRJ 2007/1 Stefan Dissmann Vererbung Spezialisierung von Klassen in JAVA möglich durch Konzept der Vererbung.

PRJ 2007/1Stefan Dissmann

Vererbung

Spezialisierung von Klassen in JAVA möglich durch

Konzept der Vererbung

Page 2: PRJ 2007/1 Stefan Dissmann Vererbung Spezialisierung von Klassen in JAVA möglich durch Konzept der Vererbung.

PRJ 2007/2Stefan Dissmann

Vererbung

Wenn eine Klasse A die Klasse B spezialisiert,also die Klasse A von der Klasse B erbt,übernimmt sie alle Attribut- und Methoden-Deklarationen von

B.

A heißt dannUnterklasse von B oder Subklasse von B

B heißt dannOberklasse von A oder Superklasse von A

Page 3: PRJ 2007/1 Stefan Dissmann Vererbung Spezialisierung von Klassen in JAVA möglich durch Konzept der Vererbung.

PRJ 2007/3Stefan Dissmann

Vererbung

Oberklasse

Unterklasse

Page 4: PRJ 2007/1 Stefan Dissmann Vererbung Spezialisierung von Klassen in JAVA möglich durch Konzept der Vererbung.

PRJ 2007/4Stefan Dissmann

Vererbung

Beispiel:

public class Person { private String name, vorname, wohnort; public Person(String n, String v, String w) { name = n; vorname = v; wohnort = w; } public String toString() { return name + ", " + vorname }}

Page 5: PRJ 2007/1 Stefan Dissmann Vererbung Spezialisierung von Klassen in JAVA möglich durch Konzept der Vererbung.

PRJ 2007/5Stefan Dissmann

Vererbung

Beispiel:

public class Person { private String name, vorname, wohnort; public Person(String n, String v, String w) { name = n; vorname = v; wohnort = w; } public String toString() { return name + ", " + vorname }}

public class Kunde extends Person {{ private int nummer;}

Page 6: PRJ 2007/1 Stefan Dissmann Vererbung Spezialisierung von Klassen in JAVA möglich durch Konzept der Vererbung.

PRJ 2007/6Stefan Dissmann

Vererbung

Beispiel:

public class Person { private String name, vorname, wohnort; public Person(String n, String v, String w) { name = n; vorname = v; wohnort = w; } public String toString() { return name + ", " + vorname }}

public class Kunde extends Person { private int nummer;}

Page 7: PRJ 2007/1 Stefan Dissmann Vererbung Spezialisierung von Klassen in JAVA möglich durch Konzept der Vererbung.

PRJ 2007/7Stefan Dissmann

Vererbung

Beispiel:

public class Person { private String name, vorname, wohnort; public Person(String n, String v, String w) { name = n; vorname = v; wohnort = w; } public String toString() { return name + ", " + vorname }}

public class Kunde extends Person { private int nummer;}

+

Page 8: PRJ 2007/1 Stefan Dissmann Vererbung Spezialisierung von Klassen in JAVA möglich durch Konzept der Vererbung.

PRJ 2007/8Stefan Dissmann

Vererbung

public class Kunde extends Person {{ private int nummer;}

bedeutet:• Kunde wird als Unterklasse von Person definiert.• Person wird dadurch Oberklasse von Kunde.• Kunde hat geerbt:

• die öffentliche Methode toString,• die privaten Attribute name, vorname und wohnort.

• In Kunde wird definiert:• das private Attribut nummer.

Page 9: PRJ 2007/1 Stefan Dissmann Vererbung Spezialisierung von Klassen in JAVA möglich durch Konzept der Vererbung.

PRJ 2007/9Stefan Dissmann

Vererbung

Person

Kunde

Page 10: PRJ 2007/1 Stefan Dissmann Vererbung Spezialisierung von Klassen in JAVA möglich durch Konzept der Vererbung.

PRJ 2007/10Stefan Dissmann

Vererbung

Was bringt Vererbung?

Page 11: PRJ 2007/1 Stefan Dissmann Vererbung Spezialisierung von Klassen in JAVA möglich durch Konzept der Vererbung.

PRJ 2007/11Stefan Dissmann

Vererbung

Was bringt Vererbung?

• verringerten Schreibaufwand• Gleichförmigkeit + Gleichbehandlung• reduzierten Änderungsaufwand• vereinfachtes Testen

aber auch:

• ständiges Beachten der gegenseitigen Abhängigkeiten

Page 12: PRJ 2007/1 Stefan Dissmann Vererbung Spezialisierung von Klassen in JAVA möglich durch Konzept der Vererbung.

PRJ 2007/12Stefan Dissmann

Fragen

Was geht wie in der Klasse Kunde?

• Zugriff auf die geerbten privaten Attribute name, vorname und wohnort,

• z.B. Definition eines Konstruktors für alle vier Attribute,• z.B. gemeinsamer Text aus einigen Attributen,• z.B. gemeinsamer Text aus allen Attributen,• Zulässigkeit von Referenzen auf Ober- und Unterklasse.

Page 13: PRJ 2007/1 Stefan Dissmann Vererbung Spezialisierung von Klassen in JAVA möglich durch Konzept der Vererbung.

PRJ 2007/13Stefan Dissmann

Vererbung – Konstruktor in Unterklasse

Beispiel:public class Person { private String name, vorname, wohnort; public Person(String n, String v , String w) { name = n; … } public String toString() { return name + ", " + vorname }}

public class Kunde extends Person { private int nummer;}

Page 14: PRJ 2007/1 Stefan Dissmann Vererbung Spezialisierung von Klassen in JAVA möglich durch Konzept der Vererbung.

PRJ 2007/14Stefan Dissmann

Vererbung – Konstruktor in Unterklasse

Beispiel:public class Person { private String name, vorname; public Person(String n, String v , String w) { name = n; … } public String toString() { return name + ", " + vorname }}

public class Kunde extends Person { private int nummer; public Kunde (String n, String v, String w, int n) { name = n; vorname = v; wohnort = w; nummer = n; } }

Page 15: PRJ 2007/1 Stefan Dissmann Vererbung Spezialisierung von Klassen in JAVA möglich durch Konzept der Vererbung.

PRJ 2007/15Stefan Dissmann

Vererbung – Konstruktor in Unterklasse

Beispiel:public class Person { private String name, vorname; public Person(String n, String v , String w) { name = n; … } public String toString() { return name + ", " + vorname }}

public class Kunde extends Person { private int nummer; public Kunde (String n, String v, String w, int n) { name = n; nicht erlaubt, da private in Oberklasse vorname = v; nicht erlaubt, da private in Oberklasse wohnort = w; nicht erlaubt, da private in Oberklasse nummer = n; } }

Page 16: PRJ 2007/1 Stefan Dissmann Vererbung Spezialisierung von Klassen in JAVA möglich durch Konzept der Vererbung.

PRJ 2007/16Stefan Dissmann

Vererbung – Konstruktor in Unterklasse

Beispiel:public class Person { private String name, vorname, wohnort; public Person(String n, String v , String w) { name = n; … } public String toString() { return name + ", " + vorname }}

public class Kunde extends Person { private int nummer; public Kunde (String n, String v, String w, int n) { super(n, v, w); Aufruf des Konstruktors erlaubt, da

public nummer = n; } }

Page 17: PRJ 2007/1 Stefan Dissmann Vererbung Spezialisierung von Klassen in JAVA möglich durch Konzept der Vererbung.

PRJ 2007/17Stefan Dissmann

Vererbung – Texterzeugung in Unterklasse

Beispiel:public class Person { private String name, vorname, wohnort; public Person(String n, String v , String w) { name = n; …} public String toString() { return name + ", " + vorname }}

public class Kunde extends Person { private int nummer; public Kunde (String n, String v, String w, int n) { super(n, v, w); nummer = n; } public String ???() { return ??? + ", " + nummer; } }

Page 18: PRJ 2007/1 Stefan Dissmann Vererbung Spezialisierung von Klassen in JAVA möglich durch Konzept der Vererbung.

PRJ 2007/18Stefan Dissmann

Vererbung – Texterzeugung Version 1

Beispiel:public class Person { private String name, vorname, wohnort; public Person(String n, String v , String w) { name = n; … } public String toString() { return name + ", " + vorname }}

public class Kunde extends Person { private int nummer; public Kunde (String n, String v, String w, int n) { super(n, v, w); nummer = n; } public String zuText() { return toString() + ", " + nummer; } }

Page 19: PRJ 2007/1 Stefan Dissmann Vererbung Spezialisierung von Klassen in JAVA möglich durch Konzept der Vererbung.

PRJ 2007/19Stefan Dissmann

Vererbung – Texterzeugung Version 2

Fragen:

• Ist Überdefinieren einer Methode in der Unterklasse möglich,also toString() in Ober und Unterklasse?

• Und: Wie wird dann der Namenskonflikt gelöst, um beideVersionen von toString() zu unterscheiden?

Page 20: PRJ 2007/1 Stefan Dissmann Vererbung Spezialisierung von Klassen in JAVA möglich durch Konzept der Vererbung.

PRJ 2007/20Stefan Dissmann

Vererbung – toString in Unterklasse

Beispiel:public class Person { private String name, vorname, wohnort; public Person(String n, String v, String w) { name = n; … } public String toString() { return name + ", " + vorname }}

public class Kunde extends Person { private int nummer; public Kunde (String n, String v, String w, int n) { super(n, v, w); nummer = n; } public String toString() { return super.toString() + ", " + nummer; } }

Page 21: PRJ 2007/1 Stefan Dissmann Vererbung Spezialisierung von Klassen in JAVA möglich durch Konzept der Vererbung.

PRJ 2007/21Stefan Dissmann

Vererbung – toString in Unterklasse

Zusammenfassung:

•super(…) bezeichnet den Konstruktor der Oberklasse.

•Überdefinieren von Methoden in Unterklassen ist möglich.

•super. … erlaubt den Zugriff auf Komponenten der Oberklasse.

Page 22: PRJ 2007/1 Stefan Dissmann Vererbung Spezialisierung von Klassen in JAVA möglich durch Konzept der Vererbung.

PRJ 2007/22Stefan Dissmann

Erweiterung der Klasse Kunde

Problem:Gewünscht ist Methode in Kunde, die wohnort ändern kann,wenn zugleich die richtige Kundenummer angegeben wird.

Page 23: PRJ 2007/1 Stefan Dissmann Vererbung Spezialisierung von Klassen in JAVA möglich durch Konzept der Vererbung.

PRJ 2007/23Stefan Dissmann

Erweiterung der Klasse Kunde

Problem:Gewünscht ist Methode in Kunde, die wohnort ändern kann,wenn zugleich die richtige Kundenummer angegeben wird.

Lösung:Erweiterung der Klasse Person um die Methoden gibOrt() und setzeOrt(String w)

aber:Nur die Unterklasse soll Änderung durchführen können,daher private zu wenig und public zuviel.

Page 24: PRJ 2007/1 Stefan Dissmann Vererbung Spezialisierung von Klassen in JAVA möglich durch Konzept der Vererbung.

PRJ 2007/24Stefan Dissmann

Erweiterung der Klasse Kunde

Problem:Gewünscht ist Methode in Kunde, die wohnort ändern kann,wenn zugleich die richtige Kundenummer angegeben wird.

Lösung:Erweiterung der Klasse Person um die Methoden gibOrt() und setzeOrt(String w)

daher:Zugriffsrecht protected nutzenUnterklassen dürfen zugreifen, andere Klassen nicht!

Page 25: PRJ 2007/1 Stefan Dissmann Vererbung Spezialisierung von Klassen in JAVA möglich durch Konzept der Vererbung.

PRJ 2007/25Stefan Dissmann

Überarbeitete Klasse Person

Beispiel:

public class Person { private String name, vorname, wohnort; public Person(String n, String v, String w) { name = n; vorname = v; wohnort = w; } public String toString() { return name + ", " + vorname } public String gibOrt() { return wohnort; } protected void setzeOrt(String w) { wohnort = w; }}

Page 26: PRJ 2007/1 Stefan Dissmann Vererbung Spezialisierung von Klassen in JAVA möglich durch Konzept der Vererbung.

PRJ 2007/26Stefan Dissmann

Überarbeitete Klasse Kunde

Beispiel:

public class Kunde extends Person { private int nummer; public Kunde (String n, String v, String w, int n) { super(n, v); nummer = n; } public String toString() { return super.toString() + ", " + nummer; } public aendereOrt(int n, String w) { if (nummer == n) setzeOrt(w); } }

Page 27: PRJ 2007/1 Stefan Dissmann Vererbung Spezialisierung von Klassen in JAVA möglich durch Konzept der Vererbung.

PRJ 2007/27Stefan Dissmann

Überarbeitete Klassen

Zusammenfassung:

•Person erlaubt nur Objekten von erbenden Klassen das Setzen des Ortes:

protected void setzeOrt(…)

• Kunde erlaubt allen Objekten das Ändern des Ortes, sofern die richtige Kundennummer angegeben wird:

public void aendereOrt(…)

Page 28: PRJ 2007/1 Stefan Dissmann Vererbung Spezialisierung von Klassen in JAVA möglich durch Konzept der Vererbung.

PRJ 2007/28Stefan Dissmann

Referenzen auf Ober- und Unterklassen

Beispiel:

Person p = new Person (“Meier“, “Jana“, “Dortmund“);

Kunde k = new Kunde (“Schmidt“, “Axel“, “Bochum“, 103);

// Methoden in beiden Klassen vereinbart

System.out.println(p.toString());

System.out.println(k.toString());

Page 29: PRJ 2007/1 Stefan Dissmann Vererbung Spezialisierung von Klassen in JAVA möglich durch Konzept der Vererbung.

PRJ 2007/29Stefan Dissmann

Referenzen auf Ober- und Unterklassen

Beispiel:

Person p = new Person (“Meier“, “Jana“, “Dortmund“);

Kunde k = new Kunde (“Schmidt“, “Axel“, “Bochum“, 103);

// Methoden in beiden Klassen vereinbart

System.out.println(p.toString());

System.out.println(k.toString());

// Methode aus Person vererbt

System.out.println(p.gibOrt());

System.out.println(k.gibOrt());

Page 30: PRJ 2007/1 Stefan Dissmann Vererbung Spezialisierung von Klassen in JAVA möglich durch Konzept der Vererbung.

PRJ 2007/30Stefan Dissmann

Referenzen auf Ober- und Unterklassen

Beispiel:

Person p = new Person (“Meier“, “Jana“, “Dortmund“);

Kunde k = new Kunde (“Schmidt“, “Axel“, “Bochum“, 103);

// Methoden in beiden Klassen vereinbart

System.out.println(p.toString());

System.out.println(k.toString());

// Methode aus Person vererbt

System.out.println(p.gibOrt());

System.out.println(k.gibOrt());

// Methode nur in Kunde

k.aendereOrt(103, “Unna“);

Page 31: PRJ 2007/1 Stefan Dissmann Vererbung Spezialisierung von Klassen in JAVA möglich durch Konzept der Vererbung.

PRJ 2007/31Stefan Dissmann

Referenzen auf Ober- und Unterklassen

Beispiel:

Person p = new Person (“Meier“, “Jana“, “Dortmund“);

Kunde k = new Kunde (“Schmidt“, “Axel“, “Bochum“, 103);

// Methoden in beiden Klassen vereinbart

System.out.println(p.toString());

System.out.println(k.toString());

// Methode aus Person vererbt

System.out.println(p.gibOrt());

System.out.println(k.gibOrt());

// Methode nur in Kunde

k.aendereOrt(103, “Unna“);

Page 32: PRJ 2007/1 Stefan Dissmann Vererbung Spezialisierung von Klassen in JAVA möglich durch Konzept der Vererbung.

PRJ 2007/32Stefan Dissmann

Referenzen auf Ober- und Unterklassen

Beispiel:

Person p = new Person (“Meier“, “Jana“, “Dortmund“);

Kunde k = new Kunde (“Schmidt“, “Axel“, “Bochum“, 103);

// Methoden in beiden Klassen vereinbart

System.out.println(p.toString());

System.out.println(k.toString());

// Methode aus Person vererbt

System.out.println(p.gibOrt());

System.out.println(k.gibOrt());

// Methode nur in Kunde

k.aendereOrt(103, “Unna“);

p k

Page 33: PRJ 2007/1 Stefan Dissmann Vererbung Spezialisierung von Klassen in JAVA möglich durch Konzept der Vererbung.

PRJ 2007/33Stefan Dissmann

Referenzen auf Ober- und Unterklassen

Folgerung:

Da jede öffentliche Methode der Oberklasseauch von jeder Unterklasse bereitgestellt wird,

darf eine Referenz der Oberklasse auf Objekte einer Unterklasse verweisen.

Page 34: PRJ 2007/1 Stefan Dissmann Vererbung Spezialisierung von Klassen in JAVA möglich durch Konzept der Vererbung.

PRJ 2007/34Stefan Dissmann

Referenzen auf Ober- und Unterklassen

Beispiel:

Person p;

Kunde k = new Kunde (“Schmidt“, “Axel“, “Bochum“, 103);

p = k;

p.aendereOrt(103, “Unna“);

System.out.println(p.gibOrt());

System.out.println(p.toString());

Page 35: PRJ 2007/1 Stefan Dissmann Vererbung Spezialisierung von Klassen in JAVA möglich durch Konzept der Vererbung.

PRJ 2007/35Stefan Dissmann

Referenzen auf Ober- und Unterklassen

Beispiel:

Person p = new Person (“Meier“, “Jana“, “Dortmund“);

Kunde k = new Kunde (“Schmidt“, “Axel“, “Bochum“, 103);

p = k;

p.aendereOrt(103, “Unna“);

System.out.println(p.gibOrt());

System.out.println(p.toString());

Nicht möglich, da p Referenz auf Person und aendereOrt in Person unbekannt ist.

Page 36: PRJ 2007/1 Stefan Dissmann Vererbung Spezialisierung von Klassen in JAVA möglich durch Konzept der Vererbung.

PRJ 2007/36Stefan Dissmann

Referenzen auf Ober- und Unterklassen

Beispiel:

Person p = new Person (“Meier“, “Jana“, “Dortmund“);

Kunde k = new Kunde (“Schmidt“, “Axel“, “Bochum“, 103);

p = k;

p.aendereOrt(103, “Unna“);

System.out.println(p.gibOrt());

System.out.println(p.toString());

Nicht möglich, da p Referenz auf Person und aendereOrt in Person unbekannt ist.

Page 37: PRJ 2007/1 Stefan Dissmann Vererbung Spezialisierung von Klassen in JAVA möglich durch Konzept der Vererbung.

PRJ 2007/37Stefan Dissmann

Referenzen auf Ober- und Unterklassen

Beispiel:

Person p = new Person (“Meier“, “Jana“, “Dortmund“);

Kunde k = new Kunde (“Schmidt“, “Axel“, “Bochum“, 103);

p = k;

p.aendereOrt(103, “Unna“);

System.out.println(p.gibOrt());

System.out.println(p.toString());

Unproblematisch, da in Person definiert und in Kunde nur geerbt.

Page 38: PRJ 2007/1 Stefan Dissmann Vererbung Spezialisierung von Klassen in JAVA möglich durch Konzept der Vererbung.

PRJ 2007/38Stefan Dissmann

Referenzen auf Ober- und Unterklassen

Beispiel:

Person p = new Person (“Meier“, “Jana“, “Dortmund“);

Kunde k = new Kunde (“Schmidt“, “Axel“, “Bochum“, 103);

p = k;

p.aendereOrt(103, “Unna“);

System.out.println(p.gibOrt());

System.out.println(p.toString());

In Person definiert und in Kunde geerbt und überdefiniert, so dass zwei Versionen von toString() bereit stehen.Welche Version wird ausgeführt?

Page 39: PRJ 2007/1 Stefan Dissmann Vererbung Spezialisierung von Klassen in JAVA möglich durch Konzept der Vererbung.

PRJ 2007/39Stefan Dissmann

Referenzen auf Ober- und Unterklassen

Beispiel:

Person p = new Person (“Meier“, “Jana“, “Dortmund“);

Kunde k = new Kunde (“Schmidt“, “Axel“, “Bochum“, 103);

p = k;

p.aendereOrt(103, “Unna“);

System.out.println(p.gibOrt());

System.out.println(p.toString());

Welche Version wird ausgeführt?Das Objekt entscheidet, nicht die Referenz:Da hier ein Kunde-Objekt, wird toString() aus Kunde aufgerufen.

Page 40: PRJ 2007/1 Stefan Dissmann Vererbung Spezialisierung von Klassen in JAVA möglich durch Konzept der Vererbung.

PRJ 2007/40Stefan Dissmann

Vererbung

Person

Kunde

Aufruf einer Methode

Page 41: PRJ 2007/1 Stefan Dissmann Vererbung Spezialisierung von Klassen in JAVA möglich durch Konzept der Vererbung.

PRJ 2007/41Stefan Dissmann

Referenzen auf Ober- und Unterklassen

Zusammenfassung:

• Der Typ der Referenz bestimmt, welche Methoden über diese Referenz überhaupt aufgerufen werden dürfen.

• Wenn eine Methode über eine Referenz aufgerufen werden kann, dann wird immer die in oder am nächsten vor der Klasse des Objekts definierte Version ausgeführt.

Page 42: PRJ 2007/1 Stefan Dissmann Vererbung Spezialisierung von Klassen in JAVA möglich durch Konzept der Vererbung.

PRJ 2007/42Stefan Dissmann

Referenzen auf Ober- und Unterklassen

Zusammenfassung:

• Der Typ der Referenz bestimmt, welche Methoden über diese Referenz überhaupt aufgerufen werden dürfen.

• Wenn eine Methode über eine Referenz aufgerufen werden kann, dann wird immer die in oder am nächsten vor der Klasse des Objekts definierte Version ausgeführt.

Polymorphie

Page 43: PRJ 2007/1 Stefan Dissmann Vererbung Spezialisierung von Klassen in JAVA möglich durch Konzept der Vererbung.

PRJ 2007/43Stefan Dissmann

Referenzen auf Ober- und Unterklassen

Beispiel – es geht auch wieder zurück:

Person p = new Person (“Meier“, “Jana“, “Dortmund“);

Kunde k = new Kunde (“Schmidt“, “Axel“, “Bochum“, 103);

p = k;

System.out.println(p.gibOrt());

System.out.println(p.toString());

k = (Kunde)p;

expliziter Type-Cast:Der Programmierer versichert dem Programm, dass p auf ein Objekt der Klasse Kunde verweist.

Page 44: PRJ 2007/1 Stefan Dissmann Vererbung Spezialisierung von Klassen in JAVA möglich durch Konzept der Vererbung.

PRJ 2007/44Stefan Dissmann

Referenzen auf Ober- und Unterklassen

Wofür das Ganze?

Page 45: PRJ 2007/1 Stefan Dissmann Vererbung Spezialisierung von Klassen in JAVA möglich durch Konzept der Vererbung.

PRJ 2007/45Stefan Dissmann

Referenzen auf Ober- und Unterklassen

Wofür das ganze Referenzierungskonzept?

Es lassen sich Algorithmen formulieren, die nicht wissen müssen, mit welcher Art von Unterklassen-Objekten sie bei der Ausführung tatsächlich umgehen.

Beispiel: Liste, die nicht weiß, ob int-Werte oder Kunden-Objekte aufgelistet werden.

Page 46: PRJ 2007/1 Stefan Dissmann Vererbung Spezialisierung von Klassen in JAVA möglich durch Konzept der Vererbung.

PRJ 2007/46Stefan Dissmann

Referenzen auf Ober- und Unterklassen

Wofür das ganze Referenzierungskonzept?

Es lassen sich Algorithmen formulieren, die nicht wissen müssen, mit welcher Art von Unterklassen-Objekten sie bei der Ausführung tatsächlich umgehen.

Und: Objekte verschiedener Klassen können gemeinsam verarbeitet werden.

Beispiel:Objekte der Klassen Kunde und Lieferant bei Weihnachtsgrüßen.

Page 47: PRJ 2007/1 Stefan Dissmann Vererbung Spezialisierung von Klassen in JAVA möglich durch Konzept der Vererbung.

PRJ 2007/47Stefan Dissmann

Referenzen auf Ober- und Unterklassen

Beispiel:

public class Lieferant extends Person { …}

Page 48: PRJ 2007/1 Stefan Dissmann Vererbung Spezialisierung von Klassen in JAVA möglich durch Konzept der Vererbung.

PRJ 2007/48Stefan Dissmann

Referenzen auf Ober- und Unterklassen

Beispiel:

public class Lieferant extends Person { …}

Lieferant ist eine weitere Unterklasse von Person.

Page 49: PRJ 2007/1 Stefan Dissmann Vererbung Spezialisierung von Klassen in JAVA möglich durch Konzept der Vererbung.

PRJ 2007/49Stefan Dissmann

Unterklassen von Unterklassen

Beispiel:

public class Goldkunde extends Kunde { private String geschenk; …}

Page 50: PRJ 2007/1 Stefan Dissmann Vererbung Spezialisierung von Klassen in JAVA möglich durch Konzept der Vererbung.

PRJ 2007/50Stefan Dissmann

Unterklassen von Unterklassen

Beispiel:

public class Goldkunde extends Kunde { private String geschenk; …}

Goldkunde ist jetzt:• (direkte) Unterklasse von Kunde und zugleich• eine weitere Unterklasse von Person

Page 51: PRJ 2007/1 Stefan Dissmann Vererbung Spezialisierung von Klassen in JAVA möglich durch Konzept der Vererbung.

PRJ 2007/51Stefan Dissmann

Klassenhierarchie

Person

Kunde

Goldkunde

Lieferant

Page 52: PRJ 2007/1 Stefan Dissmann Vererbung Spezialisierung von Klassen in JAVA möglich durch Konzept der Vererbung.

PRJ 2007/52Stefan Dissmann

Anmerkungen zum Vererbungskonzept

Jede Klasse hat höchstens eine Oberklasse:

public class Goldkunde extends Kunde { private String geschenk; …}

(Die Syntax erlaubt hier keine Liste!)

Page 53: PRJ 2007/1 Stefan Dissmann Vererbung Spezialisierung von Klassen in JAVA möglich durch Konzept der Vererbung.

PRJ 2007/53Stefan Dissmann

Anmerkungen zum Vererbungskonzept

Jede Klasse hat höchstens eine Oberklasse:

public class Goldkunde extends Kunde { private String geschenk; …}

(Die Syntax erlaubt hier keine Liste!)

Es entstehen immer Vererbungsbäume!

Page 54: PRJ 2007/1 Stefan Dissmann Vererbung Spezialisierung von Klassen in JAVA möglich durch Konzept der Vererbung.

PRJ 2007/54Stefan Dissmann

Anmerkungen zum Vererbungskonzept

Jede selbst definierte Klasse hat eine explizite Oberklasse oderdie implizite Oberklasse Object:

public class Person extends Object { …}

Page 55: PRJ 2007/1 Stefan Dissmann Vererbung Spezialisierung von Klassen in JAVA möglich durch Konzept der Vererbung.

PRJ 2007/55Stefan Dissmann

Anmerkungen zur Syntax

Jede selbst definierte Klasse hat eine explizite Oberklasse oderdie implizite Oberklasse Object:

public class Person extends Object { …}

Alle Klassen bilden einen Vererbungsbaum mit der Wurzel Object!

Page 56: PRJ 2007/1 Stefan Dissmann Vererbung Spezialisierung von Klassen in JAVA möglich durch Konzept der Vererbung.

PRJ 2007/56Stefan Dissmann

Anmerkungen zum Vererbungskonzept

Jede selbst definierte Klasse hat eine explizite Oberklasse oderdie implizite Oberklasse Object:

public class Person extends Object { …}

Alle Klassen bilden einen Vererbungsbaum mit der Wurzel Object!

Referenzen der Klasse Object können auf jedes Objekt verweisen.

Page 57: PRJ 2007/1 Stefan Dissmann Vererbung Spezialisierung von Klassen in JAVA möglich durch Konzept der Vererbung.

PRJ 2007/57Stefan Dissmann

Klassenhierarchie

Person

Kunde

Goldkunde

Lieferant

Object