super()在有些情况下不是可有可无的,它的主要作用是调整调用父类构造函数的顺序。
一般情况下,子类在实例化的时候,首先调用父类的构造函数。比如:
它trace的结果是:
这是父类的构造函数
这是子类的构造函数
================
但有的时候,你想让父类的构造函数在子类构造函数之后运行(比如子类需要先初始化某些参数),那么你把super()放在子类构造函数的初始化语句后:
结果则变成了:
这是子类的构造函数
这是父类的构造函数
一般情况下,子类在实例化的时候,首先调用父类的构造函数。比如:
package
{
public class Father
{
public var name:String;
public var age:uint;
public function Father()
{
trace("这是父类的构造函数");
}
}
}
package
{
public class Child extends Father
{
public function Child()
{
trace("这是子类的构造函数");
}
}
}
它trace的结果是:
这是父类的构造函数
这是子类的构造函数
================
但有的时候,你想让父类的构造函数在子类构造函数之后运行(比如子类需要先初始化某些参数),那么你把super()放在子类构造函数的初始化语句后:
public function Child()
{
trace("这是子类的构造函数");
super();
}
结果则变成了:
这是子类的构造函数
这是父类的构造函数