5 ActionScript的面向对象特性-

5.1 类的定义方式

可选的修饰符 class 类的名字{}

修饰符

说明

Dynamic

允许该类的实例在运行时动态添加变量和方法

Final

声明为final的类不能被其他类所继承

Internal(默认)

定义类时,class关键词前面如不指定修饰符,则默认值为internal。声明为internal的类对同一个包内定义的其它类来说是可见的。

Public

对任何范围可见

 

5.2 类封装的属性和方法

修饰符

说明

Internal(默认)

对同一个包内的所有类可见

Private

对同一个类内可见

Proctected

对同一个类或者这个类的子类可见

Public

对所有类可见

自己定义的命名空间

归属于自己定义的命名空间范围

Static

定义类的静态属性

Final(用在方法上)

表明该类的成员方法不能被继承的子类所重载

Override(只能用在方法上)

表该该成员方法是重载与继承自父类的成员方法

 

方法包括:

构造函数,修饰符只能是public或者internal。基本情况下用public

实例方法,可以访问类的所有属性,也可以访问类的静态属性和静态方法。注:this引用代表的是当前类实例对象的引用。This引用可以用作类实例的属性和类实例的方法,但它不能作用于类的静态属性和类的静态方法。

静态方法:是那些以static关键词声明的方法。类的静态方法中只调用类的静态属性和类的静态方法

/写方法(Setter/Getter method

             function get 属性名():属性数据类型{}

             function set 属性名(属性数据类型):void{}

绑定方法:myButton.addEventListener(“click”,onClick);

6 ActionScript的面向对象特性-接口

6.1 定义接口

public(internal) interface IEmptyInterfaceDefinition{

}

注:接口内只允许声明方法,不允许声明变量或常量。这与java不同。

接口内的方法声明不能出现修饰符,接口内只需要方法的声明,不需要方法的实现。

由于接口是一系列方法的抽象的集合,因此接口是不能被实例化的。

6.2接口的实现

实现一个接口需要通过关键词implements来完成。实现接口的方法需要有函数体,哪怕是空函数体。实现接口方法的访问修饰符必须为public

public class Test implements IMyInterfaceA,IMyInterfaceB{

}                                               //接口的多重实现

7 ActionScript的面向对象特性-继承

public class ChildClass extends ParentClass{}

被标识为final的类不能被继承。

继承的内容:子类可以完全继承父类中被标识为publicprotected的属性和方法。如果子类和父类属于同一包,那么子类还可以继承父类中被标识为internal的属性和方法。被标识为private的属性和方法永远不能被子类继承。类的静态属性和方法,由于只存在唯一的一个副本,所以不能被子类所继承。

重载方法:对子类中继承父类的方法通过在方法修饰符前加关键词override

super引用super引用可以调用父类中的方法。在很多时候,子类重载的方法中还需要父类中方法内的所有逻辑,而且在这些逻辑的基础上还要有额外增加的逻辑。super.publicMethod();一般情况下用在子类中的重载方法和构造函数中【super(myStr) myStr为传入父类构造函数的参数】。

多态var baseVar:BaseClass=new ExtendClassA();

继承只能单一继承。

8 ActionScript的面向对象特性-类型之间的关系

8.1 拥有关系

当一个类型A内具有了类型B的引用时,我们称A类型拥有B类型,即A拥有B

8.2 是关系

当一个子类A继承了父类B时,我们称AB类型。

当一个接口A继承了接口B时,我们称AB类型。

当一个类A实现了接口B时,我们称AB类型。

8.3 typeofinstanceofisas操作符

Ø  typeof 操作符用于区分ActionScript2中的原始数据类型,它的返回值是String类型。能识别的数据类型有BooleanNumberNumberintuint),StringObject(所有复杂数据类型)

Ø  instanceof操作符可以检测具体的class类型,但不能检测接口类型。返回值是bool型。Instanceof操作符的左侧是被检测的类型引用,instanceof的右侧是检测是否匹配的类型。建议用is替换instanceof

Ø  is操作符不但能辨别实例对象是否属于某个class类型,还能辨别实例类型属于接口类型。Is用法同instanceof

Ø  as操作符是ActionScript3中新引入的操作符。它可以检测类和接口,但是与is操作符的返回值不一样。如果as操作符左边的实例是右边的类型,那么它返回的是该引用对象,否则返回null

8.4 类型转换

上溯转换也称为隐式类型转换(upcast)。上溯转换的规则是:当类A是类B的时候,类A的实例可以被赋值给类B的实例。

下溯转换也称为显示类型转换(downcast)。下溯转换的规则是:当类A是类B的时候,如果已知类B中存储的实例是类A型的对象,我们可以把存储在类B中的类型A对象转换成自己的类型,即转换成A类型。下溯转换时,被转换的对象实例要写在 ()内,()的左侧写要转换的实际类型。

还可以使用API转换类型。

 

posted on 2011-04-17 13:01  pandy  阅读(228)  评论(0)    收藏  举报