actionscript-3 - 在子类 AS3 中使用 super()

标签 actionscript-3

为了解释我的问题,我编写了一些代码。

这是父类(super class):

package

{
    public class Cclass
    {
        public function Cclass(a:int, words:String)
        {
            trace("i am:"+a," years old and i will:"+words," you");
        }
    }
}

这是子类:

package
{
    public class Dclass extends Cclass
    {
        public function Dclass(a:int, words:String)
        {
            super(a, words);
            trace(a, words);

        }
    }
}

当我测试它时,我得到以下输出:

i am:5  years old and i will:kill  you
i am:6  years old and i will:strangle  you
6 strangle

super 运行Cclass的构造函数并再次执行相同的操作,但是如果我尝试在没有“super(a,words)”的情况下运行它,它就不起作用,这是可以理解的。我的问题是如何使Dclass仅显示trace(a, Words);而不运行Cclass的构造函数。我想得到这个输出:

i am:5  years old and i will:kill  you
6 strangle

最佳答案

扩展类时,AS3 运行时将自动调用基类构造函数。
因此,您可以假设在扩展类时,无论您是否编写代码, super.constructor 总是会发生。
这就是为什么最好不要在构造函数中包含任何代码。

这并不意味着稍微按摩就无法修复它

public class Cclass{
  public function Cclass( ){
  }
  public function doTrace( a:int, words:String):void{
    trace("i am:"+a," years old and i will:"+words," you");
  }
}

public class Dclass extends Cclass{
    public function Dclass(){
      //super();// this is implied that it will always happen
    }
    public function myTrace(a:int, words:String):void{
        this.doTrace(a, words);
    }
}

var dClass:Dclass = new Dclass()
dClass.myTrace(5,'kill')

关于actionscript-3 - 在子类 AS3 中使用 super(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14285157/

相关文章:

apache-flex - Actionscript/Flex 中的 XML 作为 XMLNode

apache-flex - Actionscript 3 自省(introspection)——函数名称

flash - AS3 NetConnection 推荐用法

android - 在Flex中,如何访问apk中的打包文件?

apache-flex - Flash 播放器 10 Filereference.save 和文件扩展名

actionscript-3 - 从 Class 对象中获取类名

javascript - ActionScript3 (AS3) 对 javascript/jquery 函数的外部接口(interface)调用不起作用

flash - 在 AS3 中更改 TextField 选择颜色

ios - actionscript3 中的共享对象问题

flash - 雪球中随机雪的数学方程