0

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

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

所以..

var class = new basicClass(var1, var2);

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

public class betterClass extends basicClass

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

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

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

var class2 = new betterClass(var3, var4)

因为var3andvar4是针对 BetterClass 的构造函数的,所以我看不到一个实例basicClass是如何设置的。

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

4

3 回答 3

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.
}
于 2012-06-07T15:49:16.637 回答
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

于 2012-06-07T15:42:20.310 回答
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;
    }
  }
}

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

只是一些额外的输入。

于 2012-06-07T15:57:06.290 回答