Flash.ActionScript3.殿堂之路 笔记 5 [类与对象]

ActionScript 3 面向对象

//类的成员 类和对象的关系 .操作符 package import 构造函数 密封类 动态类

类(Class): 泛指一切具有状态(属性)和行为(方法)的数据集合

对象(Object): 类的一个实例

权威定义: 一个对象有自己的状态 行为和唯一的标示符 
所有相同类型的对象所具有的结构和行为在它们的共同的类(Class)中被定义

类的实例: 一个对象的具体化

类的成员:{

属性(状态)[state]: 包括这个对象已有的属性再加上对象所具有的当前属性值

方法(行为)[behavior]: 指一个对象如何影响外界及被外界影响

表现为对象自身状态的改变和信息的传递

标识(identity): 指一个对象所具有的区别于所有其他对象的属性

构造函数: 用来初始化对象

}

.操作符

使用对象名.属性(方法)来操作对象


  1. package{ 
  2. class Rectangle{ 
  3.     var width:Number;   //属性 
  4.     var height:Number; 
  5.     var area:Number; 
  6. public function Rectangle(width:Number,height:Number){ //构造函数 
  7.     this.width=width; //初始化 
  8.     this.height=height; 
  9. public function getArea():Number{ //方法 
  10.     area=height*width; 
  11.     return area; 

先定义类(Class) 再创建 Class 的实例 实例创建后 才可以访问实例属性和方法

创建类的实例(对象){

1 新建flash文件

2 将上述类代码写在一个单独的ActionScript文件中 文件名为 Rectangle.as
保存在和flash文件同一个文件夹下

3 将下述实例代码保存为 RectangleTest.as 放在和flash文件同一文件夹下


  1. package { 
  2.         import flash.display.Sprite; 
  3.         public class RectangleTest extends Sprite{ 
  4.             public function RectangleTest(){ 
  5.                 var o:Rectangle=new Rectangle(10,10); 
  6.                 trace(o.getArea()); 
  7.             } 
  8.         } 
  9.         } 
  

4 在flash文件属性面板连接到类 TectangleTest CTRL+ENTER 测试

}

package: 定义包的路径 在AS3 中必须定义 如果没有指定路径 应该定义为package{}

import: 导入所需的类文件

类结构{

package 包路径{

  class 类名{

   1 静态属性

   2 静态方法

   3 实例属性 //描述对象的状态

   4 构造函数 //初始化对象

   5 实例方法 //描述对象的行为

  }

}

}
类成员中属性又分1静态属性和3实例属性

类成员中方法又分2静态方法和5实例方法

静态属性和方法是和类相关 直接使用

实例属性和方法是和对象相关 必须先创建类的实例(对象)后使用

每一个对象都具有实例属性和实例方法

使用 static 定义的属性和方法必然是静态属性和方法

{

  1. package{ 
  2.     class Rectangle{ 
  3.         public static var Name:String="Box"; //静态属性 
  4.         public var area:Number,height:Number,width:Number; //实例属性 
  5.         public static function traceName():void{ //静态方法 
  6.             trace(Name); 
  7.         } 
  8.         public function Rectangle(width:Number,height:Number){ //构造函数 
  9.             this.width=width;this.height=height; 
  10.         } 
  11.         public function getArea():Number{ //实例方法 
  12.             area=width*height; 
  13.             return area; 
  14.         } 
  15.     } 
  16. package { 
  17.     import RectangleStatic; 
  18.     import flash.display.Sprite; 
  19.     public class RectangleStaticTest extends Sprite{         
  20.         public function RectangleStaticTest(){ 
  21.             trace(RectangleStatic.Name); //直接通过类名.方法使用 
  22.             RectangleStatic.traceName(); 
  23.         }    
  24.     } 

}

构造函数{

构造函数是一个命名为类名的函数 没有返回值 可以有0个或多个参数 用来初始化对象

每个对象被创建时都会调用构造函数

如果没有定义构造函数 那么ActionSctipt 调用默认的构造函数 () 来初始化对象
一个没有参数的空函数

一旦定义自己的构造函数 那么默认的构造函数将不可用

构造函数必须使用 public 访问控制

  1. public function Rectangle(width:Number,height:Number){ //构造函数 
  2.     this.width=width; //初始化 实例属性 width = 参数 width 
  3.     this.height=height; //实例属性 height = 参数 width 
  4. var o:Rectangle=new Rectangle(10,10);  
  5. //新建一个对象o 类型为Rectangle 调用构造函数 传入2个参数 用来初始化对象 o 
  6. //设置长为10 宽为10  

}

密封类和动态类

以上类文件都是密封类 及不可以添加动态属性和方法

使用 dynamic 关键字定义的类叫做动态类 可以在运行时添加动态属性和方法

动态类性能不如密封类 检测比较宽松 但比较灵活


  1. public dynamic class Foo{ 
  2.     var name:String="tigerz"
  3. var o:Foo=new Foo(); 
  4. o.url="blog.csdn.net.ttigerdna"; //动态添加属性 

使用for...in 和 for each...in 只能检测到对象的动态属性

this关键字
复合类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值