AS3如何将vars发送到继承类的父构造函数?

时间:2012-06-07 15:39:01

标签: actionscript-3 inheritance

这个标题可能毫无意义,所以我会试着解释一下。

假设我在AS3中创建了一个类,任何具有一些基本变量的类,并且这些变量是通过该类构造函数设置的

所以..

var class = new basicClass(var1, var2);

现在假设我想创建一个继承basicClass的变量/方法等的新类,所以新类有类似

的类

public class betterClass extends basicClass

也许这也有一些通过它的构造函数设置的变量。

现在我感到困惑的是,如何通过创建betterClass来设置父类(basicClass)变量或通过它的构造函数做什么?

如果basicClass有一个期望值的构造函数,那么你如何设置它呢...

var class2 = new betterClass(var3, var4)

因为var3var4用于betterClass的构造函数,所以我看不到如何设置basicClass的实例。

我知道这是非常基本的东西,我以前从未需要使用继承。

3 个答案:

答案 0 :(得分:2)

所以你有了BasicClass,它的构造函数可能如下所示:

public function BasicClass(var1:*, var2:*)
{
    //do some stuff with var1 and var2
}

//you can extend some metods too
public function niceFunction():void
{
    trace('Oh! Hello!');
}

现在你可以创建BetterClass:

public function BetterClass(var3:*, var4:*)
{
    super(var3, var4);
    //this calls constructor of BasicClass
}

override public function niceFunction():void
{
    super.niceFunction();
    trace('Nice to meet you.');
    //This will trace: Oh! Hello! Nice to meet you.
}

答案 1 :(得分:1)

您可以使用'super'关键字'

从扩展类中调用父类的构造函数
public betterClass(){
    super(constuctorParam1,constructorParam2);// this calls the constructor of the class this class extended
}

这是更详细的信息 http://ntt.cc/2009/07/26/beginning-actionscript-3-super-this-setter-getter.html

答案 2 :(得分:0)

有时,您有不同的签名

package {
  public class A {
    protected var _a:String, _b:String;
    public function A(a:String, b:String) {
      _a = a;
      _b = b;
    }
  }
}

package {
  public class B extends A {
    private var _c:Number;
    public function B(c:Number) {
      super('', '');
      _c = c;
    }
  }
}

您必须了解不同的论点及其含义。另外,如果可能,请提供有用的默认值。

只是一些额外的输入。