Was hat das Schlüsselwort virtual in actionscript, nicht?
Ich habe einige code, der verwendet die virtual
Schlüsselwort für Funktionen, wie:
package tryOut{
public class Parent {
public function Parent() {}
public function foo():void{
trace("Parent foo");
}//foo
public virtual function bar():void{
trace("Parent virtual bar");
}//bar
}//class
}//package
Soweit ich das verstanden habe mit der virtual
Schlüsselwort sollte die Art und Weise ändern überschreiben einer Methode arbeitet, oder wie mit einem Kind-Methode funktionieren würde, oder so etwas. Aber es scheint, dass es überhaupt nichts macht. Mit der Dateiendung:
package tryOut {
public class Child extends Parent {
public function Child() {}
public override function foo():void {
trace("Child foo");
}//foo
public override function bar():void {
trace("Child virtual bar");
}//bar
}//class
}//package
Folgende code druckt:
var parent:Parent = new Parent();
var child:Child = new Child();
parent.foo(); //Parent foo
child.foo(); //Child foo
parent.bar(); //Parent virtual bar
child.bar(); //Child virtual bar
var childCast:Parent = child as Parent;
parent.foo(); //Parent foo
childCast.foo(); //Child foo
parent.bar(); //Parent virtual bar
childCast.bar(); //Child virtual bar
Also beide Methoden funktionieren auf die gleiche in Bezug auf die überschreibung. Hat die virtual
keyword verpasst etwas, was ich bin fehlt?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Aus der Hilfe-Dokumente (Wenn Sie Flash verwenden, führen Sie eine Suche für 'virtual'):
Also in AS3, virtuellen tut absolut nichts.
Was macht Sie denken, dass? Die tests gezeigt haben, sind nicht vergleichbar.
childCast
eingegeben wird alsParent
, Sie dennoch am Ende den Aufruf der Funktion inChild
.Sie prüfen nicht die gleiche situation für die nicht-virtuelle Methode.