Mehrfache Vererbung in ActionScript 3
Mehrfache Vererbung in ActionScript 3? Ist es möglich? Ich habe irgendwo gelesen, dass es möglich ist in as3.
Wenn ja, dann wie?
dies ist mein Doucument Klasse A. als
package
{
import flash.display.MovieClip;
public class A extends MovieClip implements B
{
public var value1:Number=10;
public function A()
{
trace("A Class Constructor");
}
public function hit():void
{
trace(value1+' from hit');
}
}
}
Anderen ist Schnittstelle B. als
package
{
public interface B
{
trace(' interface ');
function hit():void;
}
}
Vielen Dank im Voraus.
- Sie können nur erweitern, aus einer einzigen Klasse, sondern Sie implementieren können, so viele Schnittstellen, wie Sie möchten. Was genau wollen Sie tun, wenn Sie sagen, "Multiple Inheritance"?
- Abgestimmt für un-klare Frage. Die person will
Multiple Implements
- dies wird als Mehrfachvererbung mit Hilfe von interface.
- Ihr nicht Vererbung.. Die Klasse nicht Erben.. Welche Funktion haben Sie geerbt? Keiner.. Sie haben berichtet, dass es einige öffentlich verfügbare Methoden auf Ihre Klasse, das ist es. Keine Funktionalität hinter diesen Methoden, es sei denn, Ihrer Klasse bietet Sie sich. Also Mehrere Implementiert, nicht Mehrfache Vererbung
- 100% korrekt, -1 für nicht Fragen, klar. deine Frage macht Sinn ohne das code-snippet. aber das snippet macht deine Frage keinen Sinn.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mehrfachvererbung ist nicht möglich ALS. Aber mit Schnittstellen, die Sie nachahmen können einige der Funktionalität der Mehrfachvererbung. MI hat erhebliche Mängel, vor allem das Diamant-problem:
http://en.wikipedia.org/wiki/Diamond_problem
Das ist, warum viele Sprachen nicht unterstützen, MI, aber nur einfachvererbung.
Über Schnittstellen ist es "erscheint" Sie gelten MI, aber in Wirklichkeit ist das nicht der Fall, da die Schnittstellen nicht auf eine Umsetzung, sondern nur ein Versprechen der Funktionalität.
P. S.: Im Fall würden Sie sich Fragen:
Es gibt kein diamond-problem mit den Schnittstellen, da eine Implementierung der Schnittstellen muss genau ein Umsetzung jedes Mitglied definiert die Schnittstellen. Also, auch wenn beide Schnittstellen definieren würden das gleiche Mitglied (mit der gleichen Signatur, natürlich), wird es immer noch nur eine Implementierung.
Nun, es gibt keine Möglichkeit der Mehrfachvererbung direkt in AS3-wie viele andere OOP-Sprachen.
OOP ist über die Wiederverwendung von code und wie die meisten von uns wollen, um die Wiederverwendung von code in mehrere Klassen. Also, wenn Sie wirklich bedeuten, um die Wiederverwendung von code (Logik) und nicht nur die Signaturen, die Sie wünschen konnte zu prüfen, Zusammensetzung oder deligation Ansätze und wahrscheinlich ist dies, was Sie irgendwo gelesen habe, wie du gesagt hast.
In der Zusammensetzung, was Sie tun, ist anstelle des Erben eine baseclass in der Unterklasse, müssen Sie eine Instanz der baseclass in einer Unterklasse und haben alle Methoden
Dies ist kein hack, sondern tatsächlich eine echte und praktische Umsetzung angenommen von erfahrenen Entwicklern in vielen design-patterns.
Hoffe, das hilft
Können Sie die Mehrfachvererbung, die über die Schnittstelle.
Umm, Jungs!
Zeige ich Ihnen zwei verschiedene Möglichkeiten, um "nachahmen" Mehrfachvererbung:
Mit der #import-feature: http://archive.darronschall.com/weblog/2006/10/multiple-inheritance-in-actionscript-3.html
Vergessen Sie nicht, dass ActionScript ist eine EcmaScript. Es ist immer noch ein Prototyp-basierte Sprache: http://jolierouge.net/2010/01/as3-multiple-inheritancemixins/
Ich weiß... nicht "real" MI, aber Sie Aussehen wie eine Ente und spricht wie eine Ente...