专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »Flash教程 » actionscript3.0:ActionScript 3.0 Step By Step系列( 5):走在面向对象开发的路上 以类为基础去研究编程问题 »正文

actionscript3.0:ActionScript 3.0 Step By Step系列( 5):走在面向对象开发的路上 以类为基础去研究编程问题

来源: 发布时间:星期五, 2009年1月23日 浏览:2次 评论:0
  ActionScript 3.0中最本质东西就是类在面向对象基础上它重新构建了ActionScript核心我们在Adobe Flex环境下编写ActionSript 3.0代码都被放在<mx:Script>标签内所有ActionScript都必须以类形式出现

  本文将以ActionScript 3.0中类为核心全面讲述有关类方方面面

  、类基本要素

  在ActionScript 3.0中类是最基本编程结构所以必须先掌握编写类基础知识有关类有基本必须弄清楚元素就是所有类都必须放在扩展名为.as文件中每个as文件里只能定义个public类且类名要和.as文件名相同点和Java是完全相同

  另外在ActionScript 3.0中所有类都必须放在包中用包来对类进行分类管理相当于文件系统目录路径相对于类路径(path)默认类路径就是项目跟目录既包含mxml文件所在目录在Java中同样有包概念而在.NET中大家通常称其为名称空间或命名空间于的区别是Java/.NET类可以不属于任何包(名称空间)ActionScript则必须属于包如下代码块:

1/*
2*包:ActionScript.OOP
3*/
4packageActionScript.OOP
5{
6  /*
7  *类:属于ActionScript.OOP包
8  */
9  publicBook
10  {
11    /*
12     *构造思路方法
13     */
14    publicfunctionBook
15    {
16      //在开发路上
17    }
18  }
19}


  在上篇文章中已经讲到了在Flex环境下如何去创建类这里就不在做重复介绍了详细请查看ActionScript 3.0 Step By Step系列( 4):来自面向对象开发的前呐喊:“学会写可重用代码”

   2、类属性和思路方法

  在ActionScript 3.0中既然有类那类成员属性和思路方法肯定是不会缺少属性和思路方法定义和C#/Java相差不大也同样有修饰符(本文后续部分介绍)说简单点类属性就是和类关联变量通过关键字"var"来声明思路方法则是类行为(所谓能做些什么)和C#/Java区别是ActionScript 3.0中思路方法需要使用"function"关键字来声明

1  //定义属性(默认为ernal)
2  varname:String="ActionScript开发手册";
3  
4  /*
5   *使用function定义思路方法
6   */
7  publicfunctionGetBookName:String{
8    this.name;
9  }


  这里需要注意属性定义默认为ernal另外还有如private,public,protected等修饰符可以进行修饰如果定义为默认或是private则外部不能访问类属性如果定义为public则不能完好封装类成员属性那如何办那?在ActionScript 3.0里对类成员属性也提供了getters和ters如下代码块:

1  //定义属性(默认为ernal)
2  varname:String="ActionScript开发手册";
3  publicfunctiongetname:String{
4    this.name;
5  }
6  
7  publicfunctionname(name:String):void{
8    this.name=name;
9  }


  类属性访问器上和C#/java也是有所区别形式上和Java很相似但是还所以点点差别在JavaBean里成员属性访问器get后第个字母要大写而在实际开发中发现这里随便大小写都是可以以我个人开发Java习惯在ActionScript中定义属性getters和ters通常就是照Java方式来编写如上name属性getters在Java里应该是public Stirng getName{......}

   3、类派生(继承)

  在.NET/Java这两大平台下有关OO各种书籍、文章、杂志等数不胜数OO 3大特性:封装、继承和多态大家都快说破嘴了当然ActionScript作为门面向对象编程语言也同样具备这些特性和类密切相关就是继承OK下面我们来看看在ActinScript 3.0中类继承是如何实现以动物举例介绍说明定义父类如下:

1packageActionScript.OOP.Inheritance
2{
3  importmx.messaging.channels.StreamingAMFChannel;
4  
5  publicAnimal
6  {
7    publicfunctionAnimal
8    {
9      this.name="无名";
10    }
11    
12    publicfunctionAnimal(name:String)
13    {
14      this.name=name;
15    }
16    
17    privatevarname:String="";
18    publicfunctiongetName:String{
19      this.name;
20    }
21    publicfunctionName(name:String):void{
22      this.name=name;
23    }
24  }
25}


  然后我们需要写Cat和Dog两个类Cat和Dog都有名字那么我门就可以直接继承(ActionScript继承同Java通过关键字extends继承)Animal使用其内部定义name就OK这样就减少了写重复代码在ActionScript 3.0中子类从他父类中继承成员有思路方法、属性、事件、索引等这和C#/Java是完全但对于构造思路方法有有种特殊继承就是构造思路方法只能被ActionScript父类构造思路方法同Java样通过super关键字C#则是通过base下面是Cat和Dog基础于父类Animal代码:

1packageActionScript.OOP.Inheritance
2{
3  publicCatextendsAnimal
4  {
5    publicfunctionCat
6    {
7      super;
8    }
9  }
10}
11
12packageActionScript.OOP.Inheritance
13{
14  publicDogextendsAnimal
15  {
16    publicfunctionDog
17    {
18      super;
19    }
20  }
21}


   4、思路方法覆盖

  思路方法覆盖也就是要将从父类继承下来思路方法重新实现这里需要注意是只有父类思路方法被声明为public或protected时候在子类中才能通过override去覆盖

  比如这样个应用场景公司里普通员工和部门经理工资问题部门经理工资是普通员工3部员工其他属性都是相同所以我们在定义部门经理类时候可以直接继承于普通员工然后去覆盖(重新实现)计算工资思路方法便OK

1packageActionScript.OOP.Inheritance
2{
3  publicEmployee
4  {
5    publicfunctionEmployee
6    {
7    }
8    
9    privatevarsalary:Number=0.0;
10    publicfunctiongetSalary:Number{
11      this.salary;
12    }
13    publicfunctionSalary(name:salary):void{
14      this.salary=salary;
15    }
16    
17    publicfunctionGetSalary:Number{
18      this.salary;
19    }
20  }
21}


  下面是部门经理类代码:

1packageActionScript.OOP.Inheritance
2{
3  /*
4   *部门经理
5   */
6  publicManagerextendsEmployee
7  {
8    publicfunctionManager
9    {
10      super;
11    }
12    
13    /*
14     *部门经理工资是普通员工3部
15     */
16    publicoverridefunctionGetSalary:Number{
17      GetSalary*3;
18    }
19  }
20}


  思路方法覆盖就这么简单只要父类思路方法被声明为public或protected在子类中就可以进行重新实现覆盖父类思路方法关键字"override"OK我已经记住了

   5、动态类

  和Java在ActionScript 3.0中提供了动态类(dynamic)动态类定义在运行时可通过添加或更改属性和思路方法来改变对象非动态类(如 String 类)是密封类您不能在运行时向密封类中添加属性或思路方法在声明类时可以通过使用 dynamic 属性来创建动态类如果是在Adobe Flex开发环境下创建动态类可以直接在创建类向导里勾选为dynamic如下图:

  ActionScript 3.0 Step By Step系列( 5):走在面向对象开发<img src='/icons/34088de.gif' />路上,以类为基础去研究编程问题

  动态类创建好结构如下代码块:

1 package ActionScript.OOP.Dynamic
2 {
3   /*
4   * 创建动态类使用dynamic关键字进行声明
5   */
6   public dynamic Employee
7   {
8     public function Employee
9     {
10     }
11   }
12 }


  的所叫动态类就是我们可以在运行时候给他动态附加成员比如我们需要为上面动态类Employee添加个Name属性那应该如何添加呢?如下代码块:

1   public function TestEmployee:void {
2     var employee:Employee = Employee;
3     employee.Name = "Beniao";
4    
5     trace(employee.Name);
6   }


  这里需要注意添加到动态类例子中属性是运行时实体因此会在运行时完成所有类型检查不能向以这种方式添加属性中添加类型注释出来可以动态添加属性外也可以动态添加思路方法如下举例代码:

1   public function TestEmployee:void {
2      var employee:Employee = Employee;
3      
4      employee.GetName = function {
5        //思路方法体略
6      }
7   }


  但是以这种方式创建思路方法对于 Employee类任何私有属性或思路方法都不具有访问权限而且即使对 Employee类公共属性或思路方法引用也必须用 this 关键字或类名进行限定

   6、修饰符

  ActionScript 3.0中常用修饰符主要有ernal、private 、public和protected在定义类或成员属性/思路方法时候不加任何修饰符默认为ernal修饰详细如下:

  (1)private:仅当前类可访问称为私有成员;

  (2)ernal(默认):包内可见在同文件夹下可访问(如果不写权限修饰符默认权限也是它);

  (3)protected:子类可访问和包无关如果不是该类子类那么 protected 和 private 是

  (4)public:完全公开任何地方、任何对象都可以访问这个类成员

  另外还有个特殊修饰符""要定义静态类或是静态成员就使用关键字来修饰和C#/Java使用方法

   7、接口

  接口在面向对象编程中作用我就不用多说了可以查考C#/Java类书籍对接口解释这里就笔代过

  文章出处:http://beniao.cnblogs.com/

  相关文章:

  ActionScript 3.0 Step By Step系列( 9):使用样式(style)和皮肤(Skin)两大画笔为应用界面画妆   

  ActionScript 3.0 Step By Step系列( 8):动态数据展现源于灵活数据绑定  

  ActionScript 3.0 Step By Step系列( 7):使用XML和XMLList类处理XML数据   

  ActionScript 3.0 Step By Step系列( 6):学对象事件模型从点击按扭开始  

  ActionScript 3.0 Step By Step系列( 5):走在面向对象开发路上,以类为基础去研究编程问题   

  ActionScript 3.0 Step By Step系列( 4):来自面向对象开发的前呐喊:“学会写可重用代码”   

  ActionScript 3.0 Step By Step系列( 3):学学流程控制编编- & switch & while & for   



  ActionScript 3.0 Step By Step系列( 2):建立扎实ActionScript 3.0语法基础   

  ActionScript 3.0 Step By Step系列():工欲其善,先利其器(Flex Builder)  

  相关资源 :

  Flash ActionScript 3.0(1) - 数据类型、操作符和流程控制语句

  Flash ActionScript 3.0(2) - 包、类、包外类、命名空间、属性、思路方法、接口和继承

  Flash ActionScript 3.0(3) - 以文本形式、XML形式和JSON形式和ASP.NET通信



相关文章

读者评论

  • 共0条 分0页

发表评论

  • 昵称:
  • 内容: