Fan*_*ans 2 flash actionscript-3 flash-builder
每次我在Flash Builder中启动一个新的actionscript类时,都会用一行来启动构造函数
super()
Run Code Online (Sandbox Code Playgroud)
我以前从未见过这个,似乎没有任何意义.删除它会产生完全相同的电影.
为什么它插入到我的新课程中,它有什么作用?
super() 从您继承(扩展)的类中调用构造函数.
如果你的继承(基类)在它的构造函数中没有必需的参数,你可以将它们全部省略,flash会在构造函数代码之前自动调用它.
您可以使用super关键字从基类中调用其他函数(公共的或受保护的):
super.myBaseClassMethod(); //would call the method 'myBaseClassMethod' from your base class even if you had an overriden method with in this class
Run Code Online (Sandbox Code Playgroud)
例:
package {
public class BaseClass {
public function BaseClass(){
trace("Base Class Constructed");
}
public function someBaseMethod():void {
trace("some method called from base");
}
}
}
package {
public class MyClass extends BaseClass { //this class is extending the class above
public function MyClass():void {
trace("My Class constructed");
super();
someBaseMethod();
super.someBaseMethod();
}
override public function someBaseMethod():void {
trace("Override");
}
}
}
Run Code Online (Sandbox Code Playgroud)
所以,如果你这样做:
var tmp:MyClass = new MyClass();
Run Code Online (Sandbox Code Playgroud)
你会得到:
"My Class constructed"
"Base Class Constructed"
"override"
"some method called from base"
Run Code Online (Sandbox Code Playgroud)
如果省略super(),它将是:
"Base Class Constructed"
"My Class constructed"
"override"
"some method called from base"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1998 次 |
| 最近记录: |