·您当前的位置:首页 > 技术教程 > AS2与AS3技术 >

[AS3]as3中关键点理解:类和对象的定义

时间:2015-05-21 10:57酷播
as3.0中的类中写在as为扩展名的纯文本文件中,一个类文件可以包含一个类或多个类定义,也可以直接写入一次性执行的语句。一般来说,类定义的语法如下

as3.0中的类中写在以“.as”为扩展名的纯文本文件中,一个类文件可以包含一个类或多个类定义,也可以直接写入一次性执行的语句。一般来说,类定义的语法如下:
package //包的定义
{                
      [类修饰符] class 类名 [extends 父类]{ //此处的类名必须同.as文件的类名相同
             //静态属性 
               [访问控制符] static var 静态属性名:类型[=属性值]
               [访问控制符] static const 静态属性名:类型=属性值

             //静态方法
               [访问控制符] static function 静态方法名(参数...):返回值类型{
                                  //方法体
               }              
             //实例属性
               [访问控制符] var 属性名称:属性类型[=值]

             //构造函数


             //实例方法
             [访问控制符] function 方法名(参数...):返回值类型{
                                   //方法体
               }              

       
        }
       
}
//包外类,不希望某个类在定义该类的源文件以外可见。

1、类的修饰符

在as3.0中,可以使用以下四个属性之一来修改类定义:
        dynamic 允许在运行时向实例添加属性。
        final 不得由其它类进行扩展。
        internal(默认)对当前包内的引用可见。
        public 对所有位置的引用均可见。
    使用除internal以外的每个属性时,必须显式包含该属性才能获得相关的行为。根据是否可以动态添加实例属性和方法,可以将类分为:动态类和密封类。 动态类生成的实例可以在运行时动态添加实例属性和方法,而密封类则不可以,从语法上讲,在声明类时如果类修饰部分使用了dynamic修饰符则这个类就是 动态类,没有就是密封类。由于internal是默认的类修饰符,当类没有加上修饰符时表示这个类就是密封类。

2、静态属性和静态方法       
       静态属性存储所有此类对象共同的状态,和任何实例都没有联系。每个对象的实例属性值可以不同,但所有同类对象的静态属性值都是一致的。改变一个类的静态属性值会影响该类的所有对象。
       静态常量的声明同静态属性的声明基本一致,只是把var换成了const, 且在声明是必须赋值。
       静态方法同静态属性也是独立于所有的实例。它只同类进行绑定,不和类的任何实例绑定。
       静态属性和静态方法在类被调用时创建,只为每个类创建一次。声明静态方法可以使用Function类型来声明,即函数的表达式定义法。
       类中静态属性与静态方法的访问     

       在类中,可以直接使用静态属性名和静态方法来访问静态方法,在类外访问使用类名.静态属性名或类名.静态方法名来访问。推荐不论在类内还是类外均使用类名.静态属性名和类名.静态方法来访问。另外,如果在类中存在静态成员和实例成员同名的情况,实例成员将优先访问到,静态成员将被遮蔽。

3、实例属性和实例方法
       实例属性存储值,用来描述每个对象的状态,以变量的形式表现,定义在类中。实例方法描述这个实例可以有哪些行为,以函数形式定义在类中。方法根据所使用的 访问控制符来控制它的可访问性。实例方法也可以声明为Function类型的实例属性,在运行时,使用这种方法有其灵活的地方,可以在运行时随时替换相应 的方法。

       实例属性和实例方法的访问

       必须先创建实例,才能访问实例属性和实例方法,创建类的实例之后,就可以使用“.”运算符和“[]”运算符来访问实例属性和实例方法。大多数情况下使用“.”运算符,如果希望在运行时再决定使用哪个属性或方法就可以使用“[]”运算符,在“[]”中应写入的是字符串。格式为:实例名["属性的名字"]、实例名["方法的名字"](参数...)。

4、构造函数
         当我们使用new关键字加类名时,构造函数就会执行。构造函数的名字与类的名称一样,类的名称都是以大写的字母开头的,那么构造函数也是用大写字母开头的。类成员都不会以大写字母开头,除非常量,常量全部用大写。
       如果在类中没有定义构造函数,那么编译器在编译时会自动生成一个默认的空的构造函数。构造函数可以有参数,可以通过给构造函数传入参数来初始化成员。注 意:在as3.0中的方法都不支持重载。另外构造函数只能使用public访问控制符,编程时可以省去public,编译器会自动将构造函数设为 public。构造函数不能有返回值,声明时返回类型必须留空,但仍可以使用return来改变程序的流程,只是return语句不能返回任何值。

总结:

(1)一个类的定义包括package包路径的定义、class的名称、实例属性、实例方法、静态属性、静态方法和构造函数。
(2)每个as3.0的类都必须放在一个和class名相同的.as文件中。
(3)每个.as文件可以放置多个类,但只有与文件名同名的类才对外可见。
(4)package后的花括号内,必须且只能定义一个类。
(5)package花括号内的类,必须与.as文件名相同。
(6)在package花括号外,还可以定义若干个类(包外类),这个类只有当前类文件中的成员类可以访问。

热门文章推荐

请稍候...

保利威视云平台-轻松实现点播直播视频应用

酷播云数据统计分析跨平台播放器