as3 方法重载记

最近在研究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()已经被子类重写,因此在此处调用时,则会执行子类的,父类的不会执行。

你可能感兴趣的:(框架,xml,Adobe)