最近在研究pureMVC框架,有几个小细节,在此记录一下:
一、关于as3中方法重载。
package com.accessport.test
{ public class Base { public function Base() { } public function method_1():void{ trace("class of parent : base.method_1()"); method_2(); method_3(); } public function method_2():void{ trace("class of parent : base.method_2()"); } public function method_3():void{ trace("class of parent : base.method_3()"); } } }
父类如上,在method_1()方法中,调用method_2()和method_3().
package com.accessport.test { public class Test extends Base { public function Test() { } override public function method_1():void{ super.method_1(); trace("class of implement : method_1()"); } override public function method_2():void{ trace("class of implement : method_1()"); } } }
子类继承父类,并重写了method_1()和method_2().
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init()"> <mx:Script> <![CDATA[ import com.accessport.test.*; public function init(){ var t:Test = new Test(); t.method_1();public function method_1():void{trace("class of parent : base.method_1()"); method_2(); method_3(); }} ]]> </mx:Script> </mx:Application>
在application中,创建子类的实例,并调用method_1方法,得到如下结果:
class of parent : base.method_1() class of implement : method_1() class of parent : base.method_3() class of implement : method_1()
从结果中可以看出,子类通过调用父类的方法,然后在父类的方法中又调用对其他已经被重写的方法时,此时执行的是子类的方法,而父类的方法不会执行。
即base类中
public function method_1():void{
trace("class of parent : base.method_1()"); method_2(); method_3(); }
method_2()已经被子类重写,因此在此处调用时,则会执行子类的,父类的不会执行。