• Flex与As3学习笔记之:Part 2 ActionScript面向对象


    一、类

    1.1类修饰符及含义

    dynamic

    允许在运行时向实例添加属性

    internal(默认)

    对当前包内的引用可见

    final

    不得由其他类扩展

    public

    对所有位置的引用可见

    如:public class Person{...}

     

    1.2类的成员修饰符

    internal(默认)

    对同一包中的引用可见

    private

    对同一类中的引用可见

    protected

    对同一类及派生类中引用可见

    public

    对所有位置可见

    static

    静态成员,以类名.成员引用

    override

    覆盖超类的同名方法

    final

    禁止子类覆盖该方法

     

    1.3方法定义

     public function myFun():String{...}

     

    1.4构造函数

    与类同名,只能为public,如下

    class Example

    {

      public var status:String;

      public function Example()

       { 

        status=”adfasfsa” ;

    }

    }

     

    1.5继承用extends关键词,用super.来引用父类成员,super()执行父类构造函数

    class ExampleChild extends Example

    {

      public function ExampleChild()

      {

        super();

        trace(super.status);

       }

    }

         

    1.6静态方法(与实例方法与C#中类似)

     

    1.7属性:要以function后加get或set来定义属性。as中的属性更像特定的方法

    class GetSet

    {

      private var privateProperty:String;

      public function get publicAccess():String

       {

           return privateProperty;

       }

      public function set publicAccess(setValue:String):void

       {

           privateProperty = setValue;

       }

     }

    访问:var myGetSet:GetSet = new GetSet();

          myGetSet.publicAccess=”Hello”;

          trace(myGetSet.publicAccess);

     

    1.8绑定方法(闭包方法)

    即这种方法可以将它的方法名像参数一样传递给函数,或作为值从函数返回。在闭包方法中,this引用的是该类的实例。

    class ThisTest

    {

      private var num:Number = 3;

      function foo( ):void

       {

         trace(“现在实例”+this);

       }

     function bar( ):Function

      {

        return foo;  // 调用闭包方法

      }

    }

     

    二、包与命名空间:

    2.1包

    在AS3中,包与命名空间所不同的是,包不但可以包括类,还可以直接在其下添加变量、函数等。在包的顶级只允许两种访问说明符:public与internal;

    package samples

    {

       public class SampleClass{}

    }

     

    2.2命名空间

    在AS3中,命名空间相当于一种可访问修饰符,一旦申明某个成员是非曲直属于哪个命名空间的,就不能给其再指定public,private等修饰符,例:

         namespace version1; 

         version1 function myFunction(){...}

         在其它类中调用:

         use namespace version1;

         myFunction();

         或:version1::myFunction();

         命名空间可以在包中定义好,然后在其它包的类中定义成员时用到,如:

         package example

          {

            public namespace myInternal=http://www......;

          }

        

         package example.alpha

          {

            import example.myInternal;

            public class Utility

            {

              myInternal static function get taskCounter():int

                {

                    return 1;

                 }

             }

           }

     

         package

           {

             import example.myInternal;

             import example.alpha.Utility;

    public function NamespaceUseCase()

               {

                 use namespace myInternal;

                 var myInt:int=Utility.taskCounter;

                }

           }

     

    三、接口

       interface关键词定义,类用implements来继承自此接口,如:

       interface IAlpha

       {

      function foo(str:String):String;

       }

       interface IBeta

       {

      function bar( ):void;

       }

       class Alpha implements IAlpha,IBeta

       {

        public function foo( param: String):String{}

        public function bar():void{}

       }

  • 相关阅读:
    Hibernate使用笔记
    svn树冲突的解决方法
    SVN 清理失败的解决方法
    类的实现
    lua元表
    lua中table的常用方法
    C/C++作用域运算符::
    Cocos2d-x Lua 学习
    Lua学习
    吾 三十而望
  • 原文地址:https://www.cnblogs.com/rosiu/p/2289563.html
Copyright © 2020-2023  润新知