14.3 Erben von Fähigkeiten
Hier klicken, um das Bild zu Vergrößern
Abbildung 14.2
Im Ausgabefenster zeigt Flash beim Testen (Menü Steuerung • Film testen) viele Informationen zu den verwendeten Objekten an, wenn Sie das Menü Fehlersuche • Variablen auflisten wählen.
Für die Vererbung benötigen Sie eine vererbende Oberklasse (engl. Superclass) und eine erbende Unterklasse (engl. Subclass), die Sie grundsätzlich wie jede andere Klasse erstellen. Dabei sollte die Oberklasse bereits so viele allgemein gültige Fähigkeiten und Zustände wie möglich beinhalten:
function Mann(name) {
männer und eigenschaften.fla
this.name = name;
}
Mann.prototype.pinkleImStehen = function() {
trace("Ahhh ...");
};
Um nun die Fähigkeiten der Oberklasse zu erben, reicht es aus, eine Instanz der Oberklasse als Prototypen-Eigenschaft der Unterklasse zu definieren:
function Freund(name) {
}
// Erbe Fähigkeiten von Mann
Freund.prototype = new Mann();
// Füge der Klasse Freund weitere Fähigkeiten hinzu
Freund.prototype.macheParty = function() {
trace("Auf geht´s!");
};
Für die Vererbung von Eigenschaften reicht dies jedoch noch nicht aus. Bitte beachten Sie auch, dass die Spezialisierung der Fähigkeiten der Klasse Freund (in diesem Fall mit der Methode macheParty) nach der Vererbung durchgeführt werden muss, da bei der Vererbung durch Freund.prototype = new Mann(); alle bereits in der prototype-Eigenschaft platzierten Inhalte überschrieben werden.
Sie erzeugen und verwenden Instanzen trotz Vererbung wie gewohnt. Mit dem Vorteil, dass die Instanzen der Unterklasse durch nur eine einzige Zeile Code zusätzlich sämtliche Fähigkeiten der Oberklasse beherrschen:
einFreund = new Freund("Marc");
einFreund.pinkleImStehen();
einFreund.macheParty();
Da beliebig viele Unterklassen von einer Oberklasse abgeleitet sein dürfen, ist die Erstellung einer Vater-Klasse mit den gleichen Fähigkeiten wie der Mann-Klasse ein Leichtes:
function Vater(name) {
}
// Erbe Fähigkeiten von Mann
Vater.prototype = new Mann();
meinVater = new Vater("Adi");
meinVater.pinkleImStehen();
In Flash enthaltene Fähigkeiten erben
Auf dieselbe Art und Weise vererben Sie bereits in Flash enthaltene Fähigkeiten. Benötigen Sie zum Beispiel eine Liste, die auch gemischt werden kann, dann würde es zwar ausreichen, die Klasse Array um diese Methode zu erweitern, doch eine neue Klasse mit dieser Fähigkeit ist in vielen Fällen die sauberere Variante – schließlich ist es keine Fähigkeit von einem Array, dass es durchgemischt werden kann, und hat somit in dessen Definition nichts zu suchen:
function Liste () {
liste.fla
}
// Erbe Fähigkeiten von der Klasse Array
Liste.prototype=new Array();
// Erweitere Liste um eine Methode zum Mischen
Liste.prototype.shuffle=function () {
var sortfunction=function () {
// Berechne zufällige Ganzzahl zwischen -1 und 1
return Math.floor(Math.random()*3-1);
}
this.sort(sortfunction);
}
meineListe=new Liste();
meineListe.push("a");
meineListe.push("b");
meineListe.push("c");
meineListe.push("d");
meineListe.push("e");
meineListe.push("f");
trace(meineListe);
meineListe.shuffle();
trace(meineListe);
An dieser Stelle fehlt sowohl in dem Beispiel mit den Männern als auch in dem Beispiel mit der Liste noch die Vererbung der Eigenschaften, die über den Konstruktor (die Funktion mit der Klassenbezeichnung) initialisiert werden.
|