
extendspublic class Animal {...}
public class Mammal extends Animal {...}
Unterklasse erbt fast alle Merkmale der Oberklasse
class Animal {
void escape() { ... }
}
class Bird extends Animal {
@Override
void escape() { flyAway(); }
}
class Penguin extends Bird {
@Override
void escape() { dive(); }
}
@OverridePenguin p = new Penguin();
Bird b1 = new Bird();
Bird b2 = p;
p.escape();
b1.escape();
b2.escape();
Welche Implementierung wird jeweils verwendet?
Penguin, Bird, Penguin
Bindung von obj.m(...) erst zur Laufzeit. Wichtig ist Typ des referenzierten Objekts, nicht Typ der Variablen obj
superclass Bird extends Animal {
@Override
void escape() { flyAway(); }
}
class Chicken extends Bird {
@Override
void escape() {
cluck();
super.escape()
}
}
super bezieht sich auf die Oberklasse
thispublic Something() { super(); }super(...) nicht explizit aufgerufen, so wird von Java implizit super() ausgeführtabstract class Animal {
boolean isAlive = true;
abstract void escape();
}
class Bird extends Animal {
@Override
void escape() { flyAway(); }
}
protectedpublic abstract class Animal {
protected int age;
}
Wie package-private, aber zusätzlich in allen Unterklassen sichtbar
instanceof und CastsAnimal pluto = new Dog();
if (pluto instanceof Dog) {
Dog someDog = (Dog) pluto;
}
instanceof prüft ob ein Objekt Instanz einer Klasse ist
true für alle KindklassenfinalNeu im Zusammenhang mit Vererbung:
Object ist die Wurzel der KlassenhierarchieObject Oberklasse jeder anderen Klasseequals(Object obj)toString()clone()baldur.ira.uka.de/programmieren-ws1213/blatt05-1.0.pdf
Aufgabe A.2
