第二部分
1.类与对象
1.类的定义
package{
public class 类名{
//静态属性
//静态方法
//实例属性
//构造函数
//实例方法
}
}
2.Class成员(默认的访问控制为internal(包内可见))
- Class的名称和包路径
- 构造函数(public)
- 属性
- 方法
创建类:
var test = new TestClass(); var test:TestClass= new TestClass();//一般使用
3.实例属性,实例方法(不支持重载)
- 声明实例属性
var 属性名称:属性类型
var 属性名称:属性类型 = 值 声明实例方法
function 方法名称(参数):返回值类型{//方法内容}
访问:用点号运算符访问
4.静态属性,静态方法(static关键字)
- 不需要创建实例,直接访问数据(默认为internal)
- 应用:
- 使用静态属性集中管理数据
- 使用静态属性部分实现Enumeration(枚举类型)
- 实现工具类(静态方法)
5.构造函数
- 只能用public访问控制
- 不能声明返回类型,可以使用return(不能放回任何值或表达式)
- 用return来控制程序的流程
6.动态类与封装类
7.this关键字(只限制于实例属性与实例方法)
8.AS3方法重载(用overload方法)
public function SampleOverload(){
overload();
overload(1);
overload(“abc”);
}
private function overload(...args):*{
}
9.多个类的定义
- package后{}内必须且只能定义一个Class,与文件名相同
- package{}外可以定义多个Class(包外类)
2.类的封装
1.包的导入(import)
2.访问控制(public,private,protected,internal)
3.getter,setter
访问控制符 function get 方法名():放回类型{ return 要访问的私有属性 }
访问控制符 function set 方法名(参数:参数类型):viod{ 要访问的私有属性=参数}
3.命名空间
- 解决一词多义
- 定义:访问控制 namespace 名称
使用:
use namespace
指令打开命名空间使用命名限定符:
对象.命名空间::实例属性;
对象.命名空间::实例方法(参数…)
- 本质:
- 唯一性(uri属性)
- 定义在类中
class Foo {
public namespace good;
public namespace bed;
......
good function hello():void{...}
bed function hello():void{...}
}
* 引用(use namespace 指令都会被提前)
4.复合与继承
- 实现复合
//复合类
class Human{
private var _name:String;
private var _mouth:Mouth=new Mouth();
private var _eye:Eye=new Eye();
....
}
- 实现继承(extends)
- 访问控制
- 重写(override关键字,子类与父类同样的访问控制,参数,返回类型)
* super(调用父类构造函数)与final(终结继承,不能重写)
5.多态
- 数据类型的检查与转换(is,as判断)
- 向上转换(里氏代换原则)
在一个程序中,将所有类型为A的对象,都换成类型为B的对象,而程序行为没有改变,那么类型B是类型A的子类,反之不成立
向下转换
父类类型对象 as 子类类型对象;//使用as
子类构造函数(父类类型对象);//使用显式强行转化
6.抽象类与接口
1.实现方法
public class AbstractFoo{
//抽象类构造函数
public function AbstractFoo(){
AbstractEnforcer.enforceConstructor(this, AbstractFoo);
......
}
//抽象方法hello()
public function hello():void{
AbstractEnforcer.enforceMethod();
trace(“”);
}
}
//具体类
public class ConcreteFoo extends AbstractFoo{}
2.接口(接口不可以定义常量。)
- 创建(不定义属性)
访问控制 interface 接口名称{
function 方法名(参数:参数类型):返回类型;
static function 方法名(参数:参数类型):返回类型;
function get 方法名():返回类型
function set 方法名(参数:参数类型):void;
}
- 实现
public class 类名 implements 接口名{...}
public class 类名 implements 接口A,B,C{...}
- 继承(可以多继承)
interface 接口名称 extends 接口A,接口B{
..........
}
- 接口与抽象类结合使用 —— OOP中的默认适配器(Default Adapter)模式