As3基础部分2

第二部分


1.类与对象

1.类的定义

package{
    public class 类名{
      //静态属性
      //静态方法
      //实例属性
      //构造函数
      //实例方法
    }
}

2.Class成员(默认的访问控制为internal(包内可见))

  • Class的名称和包路径
  • 构造函数(public)
  • 属性
  • 方法
  • 创建类:

        var test = new TestClass();
    
        var test:TestClass= new TestClass();//一般使用

3.实例属性,实例方法(不支持重载)

  • 声明实例属性

    var 属性名称:属性类型
    var 属性名称:属性类型 = 值

  • 声明实例方法

    function 方法名称(参数):返回值类型{//方法内容}

  • 访问:用点号运算符访问

4.静态属性,静态方法(static关键字)

  • 不需要创建实例,直接访问数据(默认为internal)
  • 应用:
    • 使用静态属性集中管理数据
    • 使用静态属性部分实现Enumeration(枚举类型)
    • 实现工具类(静态方法)

5.构造函数

  • 只能用public访问控制
  • 不能声明返回类型,可以使用return(不能放回任何值或表达式)
  • 用return来控制程序的流程

6.动态类与封装类

7.this关键字(只限制于实例属性与实例方法)

8.AS3方法重载(用overload方法)

public function SampleOverload(){
    overload();
    overload(1);
    overload(“abc”);
}
private function overload(...args):*{

}

9.多个类的定义

  • package后{}内必须且只能定义一个Class,与文件名相同
  • package{}外可以定义多个Class(包外类)

2.类的封装

1.包的导入(import)

2.访问控制(public,private,protected,internal)

3.getter,setter

访问控制符 function get 方法名():放回类型{ return 要访问的私有属性 }
访问控制符 function set 方法名(参数:参数类型):viod{ 要访问的私有属性=参数}


3.命名空间

  • 解决一词多义
  • 定义:访问控制 namespace 名称
  • 使用:

    • use namespace指令打开命名空间
    • 使用命名限定符:

      对象.命名空间::实例属性;

      对象.命名空间::实例方法(参数…)

  • 本质:
    • 唯一性(uri属性)
    • 定义在类中
   class Foo {
       public namespace good;
       public namespace bed;
       ......
       good function hello():void{...}
       bed function hello():void{...}
   }
* 引用(use namespace 指令都会被提前)

4.复合与继承

  • 实现复合
  //复合类
  class Human{
      private var _name:String;
      private var _mouth:Mouth=new Mouth();
      private var _eye:Eye=new Eye();
  ....
  }
  • 实现继承(extends)
    • 访问控制
    • 重写(override关键字,子类与父类同样的访问控制,参数,返回类型)

* super(调用父类构造函数)与final(终结继承,不能重写)

5.多态

  • 数据类型的检查与转换(is,as判断)
  • 向上转换(里氏代换原则)

    在一个程序中,将所有类型为A的对象,都换成类型为B的对象,而程序行为没有改变,那么类型B是类型A的子类,反之不成立

  • 向下转换

    父类类型对象 as 子类类型对象;//使用as

    子类构造函数(父类类型对象);//使用显式强行转化


6.抽象类与接口

1.实现方法

public class AbstractFoo{
//抽象类构造函数
public function AbstractFoo(){
    AbstractEnforcer.enforceConstructor(this, AbstractFoo);
    ......
}
//抽象方法hello()
public function hello():void{
    AbstractEnforcer.enforceMethod();
    trace(“”);
  }
}
//具体类
public class ConcreteFoo extends AbstractFoo{}

2.接口(接口不可以定义常量。)

  1. 创建(不定义属性)
  访问控制 interface 接口名称{
      function 方法名(参数:参数类型):返回类型;
      static function 方法名(参数:参数类型):返回类型;
      function get 方法名():返回类型
      function set 方法名(参数:参数类型):void;
  }
  1. 实现
  public class 类名 implements 接口名{...}
  public class 类名 implements 接口A,B,C{...}
  1. 继承(可以多继承)
  interface 接口名称 extends 接口A,接口B{
  ..........
  }
  1. 接口与抽象类结合使用 —— OOP中的默认适配器(Default Adapter)模式
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值