ActionScript3.0 OOP支持是可选的,这为程序员提供了很大的灵活性,使他们可以为各种领域何不同复杂程度的项目选择最佳的方法,对于小小项目,随用过程化编程就能满足需要,但对于大项目,应用OOP原则可以使代码更易于理解、维护、和扩展。
一、面向对象的编程基础知识。
1、面向对象的编程基础知识
OOP是一种组织程序代码的方法,它将代码划分为对象,即包含信息和功能的单个元素。
2、常见的面型对象的编程任务。
面向对象的编程包含两个部分,一部分就是设计,另一个部分就是构建函数,OOP中一下常见任务:
- 定义类
- 创建属性、方法、以及get和set存取器
- 控制对类、属性、方法、和存取器的访问
- 创建静态属性和方法
- 创建与枚举类似的结构
- 定义和使用接口
- 处理继承(包括覆盖类的元素)
3、重要的概念和术语
- 属性:为类元素(属性或方法)分配的特征。属性通常用于定义程序的其他部分中的代码能否访问属性或方法。
- 类:某种类型的对象的结构和行为定义。
- 类层次结构。多个相关的类的结构。指定类与类中的功能继承。
- 构造函数:可以在类中定义的特殊方法,当创建类的实例的时候就调用那个方法,不用写返回类型。
- 数据类型:特定变量可以存储的信息类型。通常“数据类型”表示与“类”相同的内容。
- 点运算符:“.”用于指定定某个名称引用对象的子元素(属性或方法)。
- 枚举:一组相关常量数值,为方便起见,而将其作为一个类的属性组合在一齐。
- 继承:允许一个类定义包含另一个类定义的所有功能。
- 实例:程序中创建的实际对象
- 命名空间:实质上是一个自定义属性,可以更精确地控制代码对其他代码的访问。(父包.子包.具体类名)
二、类
类是对象的抽象表示形式,用来存储有关对象可保存的数据类型及对象可以表现的行为信息。
1、类定义
正确的类定义语法重要求class关键字后跟类名,类体要放在大括号({})内,且放在类名后面。在AS3中,引入package语句,包名称必须包含在声明中,而不是包含在类声明中。
2、类属性
as3中有四个属性来修改类定义
- dynamic 允许在运行时向实例添加属性。 动态类的关键字
- final 不得由其它类扩展
- internal 对当前包内的引用可见
- 公共 public 对所有位置的引用可见。
并不包含internal 和public两个属性,因为这两个属性在类定义中有意义,但不可以应用于类本身。
3、类体
类体放在大括号内,用于定义类的变量、常量和方法。还可以在类体中定义命名空间。还允许包括语句,如果语句。如果语句在类体中但在方法定义之外,这些语句在遇到类定义并且创建了相关的类对象是执行一次。
4、类属性(property)的属性(attribute)
AS3中提供了可以与类的任何属性(property)一起使用的一组属性(attribute)
- internal 对同一包中的引用可见。
- private 对统一类中的引用可见。
- protercted 对统一类及派生来中的引用可见。
- public 对所有位置的引用可见。
- static 指定某一属性属于该类,而不属于该类的实例。
- UserDefinedNamespace 用于定义的自定义命名空间
三、变量
用var或const关键字声明的变量。var关键字声明的变量可以多次更改其变量值,const关键字声明的变量称为“常量”,只能赋值一次。
1、静态变量。
用static关键字,和var或const语句共同声明的。静态变量附加到类而不是实例。只能通过类本身来引用,不能通过类实例访问静态变量。声明常量的同时初始化使用。static和const关键字声明的变量,只能在创建时同时赋值。
2、实例变量。
实例变量包括使用var和const关键字,但未使用static关键声明的属性。实例变量附加到类实例,并不是整个类,对于存储特定的实例的值是很有用的!不能覆盖子类只能够通过getter和setter方法。可以时间类似于覆盖变量的功能。
四、方法
方法是类定义中的函数。不能将方法与附加方法的实例分开使用。
1、构造函数方法。
与在其中定义的函数的类共享统一名称的函数。只要使用new关键字创建类实例,就会执行构造函数方法中包括的所有代码。构造函数方法只能是公共方法。不能对关照函数方法使用用户定义的命名空间。构造函数可以使用super()语句显式地调用其直接超类的构造函数。如果决定在统一构造函数中使用super()和super,务必先调用super(),构造函数不能有返回值。所以不必定义任何返回值!
2、静态方法
静态方法也是类方法。使用static关键字声明的方法,静态方法附加到类而不是类的实例。只能通过类访问静态方法。二不能通过类实例访问。换句话说,就是如果方法提供的功能对类实例的值没有直接的影响,该方法应是静态方法。因为静态方法不能绑定到某个具体的实例,所有不能在静态方法中使用关键字this或super。
3、实例方法
实例方法是不使用是static关键字声明的方法。实例方法是附加到类实例而不是整个类。在实例方法中,静态变量和实例变量都在作用域中,这表示使用一个简单的标识符可以引用一同一类定义的变量。