pdf, 4 Folien pro Seite
Short Description
Download pdf, 4 Folien pro Seite...
Description
Vererbung – Überschreiben von Methoden
Vererbung – Überschreiben von Methoden
public class Ellipse {
public class Ellipse {
float x, y, r, r2;
float x, y, r, r2;
public double umfang () { return Math.PI * ((this.r + this.r2) * 3 / 2 - Math.sqrt(this.r * this.r2)); }
public double umfang () { return Math.PI * ((r + r2) * 3 / 2 - Math.sqrt(r * r2)); }
}
}
– Dynamische Bindung (late binding)
– Dynamische Bindung (late binding)
– xxx.umfang() für Instanzen von Ellipse
– xxx.umfang() für Instanzen von Ellipse
– xxx.umfang() für Instanzen von Circle
– xxx.umfang() für Instanzen von Circle
Wolfgang Goerigk: Objektorientierte Programmierung in Java (SS 2009)
92
Wolfgang Goerigk: Objektorientierte Programmierung in Java (SS 2009)
93
Vererbung – Dynamische Bindung (late binding)
Vererbung – Überschreiben von Methoden
public class Circle extends Ellipse {
public double umfang () { return Math.PI * ((r + s) * 3 / 2 - Math.sqrt(r * s)); public double umfang () { return 2 * Math.PI * r; }
double r; public double umfang () { return 2 * Math.PI * r; } }
Ellipse e = new Ellipse(); Circle c = new Circle();
– Dynamische Bindung (late binding)
… e.umfang() … … c.umfang() …
– xxx.umfang() für Instanzen von Ellipse – xxx.umfang() für Instanzen von Circle
Wolfgang Goerigk: Objektorientierte Programmierung in Java (SS 2009)
94
Wolfgang Goerigk: Objektorientierte Programmierung in Java (SS 2009)
95
Vererbung (Typ-Subtyp-Beziehung)
Vererbung – Dynamische Bindung (late binding)
A
!
Der Typ des Nachrichtenempfängers entscheidet, welche Methode aufgerufen wird.
class B extends A { … }
Ellipse e = new Ellipse(); Circle c = new Circle();
B
– jedes B ist auch ein A, B ist Subtyp von A – überall, wo ein A erwartet wird, darf auch ein B auftauchen
… e.umfang() … … c.umfang() …
Wolfgang Goerigk: Objektorientierte Programmierung in Java (SS 2009)
96
Wolfgang Goerigk: Objektorientierte Programmierung in Java (SS 2009)
97
Vererbung – Dynamische Bindung (late binding)
Vererbung (Typ-Subtyp-Beziehung)
Ellipse e; Circle c; class Circle extends Ellipse { … }
if (das_Wetter_ist_schoen()) e = new Ellipse(); else e = new Circle(); … e.umfang() …
– jeder Kreis ist auch eine Ellipse, Circle ist Subtyp von Ellipse – überall, wo eine Ellipse erwartet wird, darf auch ein Kreis auftauchen
Wolfgang Goerigk: Objektorientierte Programmierung in Java (SS 2009)
! 98
Methodenauswahl zur Laufzeit parametrischer Polymorphismus
Wolfgang Goerigk: Objektorientierte Programmierung in Java (SS 2009)
99
Vererbung (Struktursicht, Finalisieren von Klassen)
Vererbung (Typsicht)
Welche Komponenten hat eine Klasse ? class Circle extends Ellipse { … }
Attribute (Instanzvariablen) – alle Attribute der Superklasse (und damit aller Superklassen) – alle eigenen (lokalen) Attribute
(nur) Intuition : U Universum aller Objekte, Ellipse Menge von Objekten, die gewisse Merkmale ihrer Instanzen verlangt (x, y, r, r2, …) Also: Ellipse ⊆ U (alle Ellipsen sind Objekte) Analog: Circle ⊆ U. Circle verlangt mehr Merkmale (double r) als Ellipse, ist also eine kleinere Menge von Instanzen, also Circle ⊆ Ellipse Wolfgang Goerigk: Objektorientierte Programmierung in Java (SS 2009)
100
Methoden – alle Methoden der Superklasse, die nicht durch eine gleiche lokale Methode (Name und Signatur) überschrieben werden – alle lokalen Methoden
Wolfgang Goerigk: Objektorientierte Programmierung in Java (SS 2009)
101
View more...
Comments