【发布时间】:2010-02-12 00:09:19
【问题描述】:
我发现一些代码使用virtual 关键字作为函数,例如:
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
据我了解,使用 virtual 关键字应该修改覆盖方法的工作方式,或者使用子方法的工作方式,或其他方式。但它似乎什么也没做。有扩展名:
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
以下代码打印:
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
因此,两种方法在覆盖方面的工作方式相同。 virtual 关键字会改变我缺少的东西吗?
【问题讨论】:
标签: actionscript-3