您的位置:首页 > 其它

Flex与As3学习笔记之:Part 2 ActionScript面向对象

2011-12-15 23:28 369 查看
一、类

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{}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: