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的类不能被继承。
继承的内容:子类可以完全继承父类中被标识为public和protected的属性和方法。如果子类和父类属于同一包,那么子类还可以继承父类中被标识为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时,我们称A是B类型。
当一个接口A继承了接口B时,我们称A是B类型。
当一个类A实现了接口B时,我们称A是B类型。
8.3 typeof、instanceof、is、as操作符
Ø typeof 操作符用于区分ActionScript2中的原始数据类型,它的返回值是String类型。能识别的数据类型有Boolean,Number(Number,int,uint),String,Object(所有复杂数据类型)。
Ø 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转换类型。