Flex与As3学习笔记之:Part 2 ActionScript面向对象
一、类
1.1类修饰符及含义
dynamic |
允许在运行时向实例添加属性 |
internal(默认) |
对当前包内的引用可见 |
final |
不得由其他类扩展 |
public |
对所有位置的引用可见 |
如:public class Person{...}
1.2类的成员修饰符
internal(默认) |
对同一包中的引用可见 |
private |
对同一类中的引用可见 |
protected |
对同一类及派生类中引用可见 |
public |
对所有位置可见 |
static |
静态成员,以类名.成员引用 |
override |
覆盖超类的同名方法 |
final |
禁止子类覆盖该方法 |
1.3方法定义
public function myFun():String{...}
1.4构造函数
与类同名,只能为public,如下
class Example
{
public var status:String;
public function Example()
{
status=”adfasfsa” ;
}
}
1.5继承用extends关键词,用super.来引用父类成员,super()执行父类构造函数
class ExampleChild extends Example
{
public function ExampleChild()
{
super();
trace(super.status);
}
}
1.6静态方法(与实例方法与C#中类似)
1.7属性:要以function后加get或set来定义属性。as中的属性更像特定的方法
class GetSet
{
private var privateProperty:String;
public function get publicAccess():String
{
return privateProperty;
}
public function set publicAccess(setValue:String):void
{
privateProperty = setValue;
}
}
访问:var myGetSet:GetSet = new GetSet();
myGetSet.publicAccess=”Hello”;
trace(myGetSet.publicAccess);
1.8绑定方法(闭包方法)
即这种方法可以将它的方法名像参数一样传递给函数,或作为值从函数返回。在闭包方法中,this引用的是该类的实例。
class ThisTest
{
private var num:Number = 3;
function foo( ):void
{
trace(“现在实例”+this);
}
function bar( ):Function
{
return foo; // 调用闭包方法
}
}
二、包与命名空间:
2.1包
在AS3中,包与命名空间所不同的是,包不但可以包括类,还可以直接在其下添加变量、函数等。在包的顶级只允许两种访问说明符:public与internal;
package samples
{
public class SampleClass{}
}
2.2命名空间
在AS3中,命名空间相当于一种可访问修饰符,一旦申明某个成员是非曲直属于哪个命名空间的,就不能给其再指定public,private等修饰符,例:
namespace version1;
version1 function myFunction(){...}
在其它类中调用:
use namespace version1;
myFunction();
或:version1::myFunction();
命名空间可以在包中定义好,然后在其它包的类中定义成员时用到,如:
package example
{
public namespace myInternal=http://www......;
}
package example.alpha
{
import example.myInternal;
public class Utility
{
myInternal static function get taskCounter():int
{
return 1;
}
}
}
package
{
import example.myInternal;
import example.alpha.Utility;
public function NamespaceUseCase()
{
use namespace myInternal;
var myInt:int=Utility.taskCounter;
}
}
三、接口
interface关键词定义,类用implements来继承自此接口,如:
interface IAlpha
{
function foo(str:String):String;
}
interface IBeta
{
function bar( ):void;
}
class Alpha implements IAlpha,IBeta
{
public function foo( param: String):String{}
public function bar():void{}
}