【问题标题】:What does the virtual keyword, in actionscript, does?actionscript 中的 virtual 关键字有什么作用?
【发布时间】: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


    【解决方案1】:

    从帮助文档中(如果您使用的是 Flash,请搜索“虚拟”):

    还有几个标识符 有时被称为 未来的保留字。这些 标识符不是由 ActionScript 3.0,虽然其中一些 可能被软件视为关键字 包含 ActionScript 3.0。 您也许可以使用其中的许多 代码中的标识符,但 Adob​​e 建议您不要使用它们 因为它们可能作为关键字出现在 该语言的后续版本。

    abstract boolean byte cast
    
    char debugger double enum
    
    export float goto intrinsic
    
    long prototype short synchronized
    
    throws to transient type
    
    virtual volatile
    

    所以在 AS3 中,virtual 绝对什么都不做。

    【讨论】:

    【解决方案2】:

    因此,两种方法在覆盖方面的工作方式相同。

    是什么让你这么想?你展示的测试没有可比性。

    childCast 被键入为 Parent,但您最终仍会调用 Child 中的函数。

    您不会检查非虚拟方法的相同情况。

    【讨论】:

    • 我的错,我纠正了这个例子。即便如此,行为保持不变。
    猜你喜欢
    • 1970-01-01
    • 2014-03-14
    • 1970-01-01
    • 2019-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-07
    • 2016-02-12
    相关资源
    最近更新 更多