zoukankan      html  css  js  c++  java
  • 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{}

       }

  • 相关阅读:
    Security and Cryptography in Python
    Security and Cryptography in Python
    Security and Cryptography in Python
    Security and Cryptography in Python
    Security and Cryptography in Python
    Security and Cryptography in Python
    Security and Cryptography in Python
    微信小程序TodoList
    C语言88案例-找出数列中的最大值和最小值
    C语言88案例-使用指针的指针输出字符串
  • 原文地址:https://www.cnblogs.com/rosiu/p/2289563.html
Copyright © 2011-2022 走看看