《Flash ActionScript 3 殿堂之路》五,六 类,成员,访问控制

时间:2022-08-06 18:58:56

1.  

 1 //1.OOP:Object-Oriented Programming
2 //2.OOP的三大要素:封装,继承,多态。
3 //3.??在OOP编程中,对代码单元访问控制得越严格,日后你对代码的修改的*度越大,修改代码单元时,需要关注保持对外开放的
4 //成员行为不变,对私有成员可以*修改。??
5
6
7 //导入单个类,生成动态文本框
8 package
9 {
10
11 import flash.display .Sprite;
12 import flash.text.TextField;
13
14 public class as3test02 extends Sprite
15 {
16 public function as3test02(){
17 var foo:TextField = new TextField();//创建一个文本框
18 foo.background = true;
19 foo.backgroundColor = 0x336073;
20 foo.text = "Hello world!";
21 addChild (foo);
22
23 }
24 }
25 }

2.

 1 //使用import避免命名冲突,在某种特殊情况下,两个具有相同类名的包都需要导入时,就需要用到全称。
2
3 import sample.car.ToyCar;
4 import org.kingda.book.basicoop.ToyCar;
5 var foo:Sample.car.ToyCar = new sample.car.ToyCar();
6 var bar:org.kingda.book.basicoop.ToyCar = new org.kingda.book.basicoop.ToyCar();
7
8 //创建一个包的过程
9 //(1)选好包名。一般以域名的倒写为前缀,包的主要功能名字在后。eg:
10 org.kingda.book.cn.actionScript3.tools.
11 //(2)在硬盘的相应的类路径下创建和包名相对应的目录结构。eg:
12 //org\kingda\book目录
13 //(3)在这个包中创见你任何类,它的package定义中必须写上包名。eg:
14 package org.kingda.book{calss A{...}}
15 //(4)以后对包的结构进行修改时,注意修改目录结构,文件中package的定义,修改import语句。
16
17
18 //类成员的访问控制,AS3中的访问控制符有4个(尽量将类成员的权限控制到最低程度)
19 //(1)public,完全公开(构造函数必须是public)
20 //(2)private,仅当前类可访问
21 //(3)protected,只能被当前类和当前类的子类访问。
22 //(4)internal,包内访问,如果一个类成员前面没有加任何访问控制,默认是internal。

 

3.getter和setter

 

 1 //getter和setter方法是存取器方法,通过它们可以更改私有成员。笔者认为getter和setter
2 //其实是封装的一种形式。能过创建可以像访问属性一样的有完善功能的成员。还允许创建只读和只写属性。
3 //eg:
4 package
5 {
6 public class as3test02
7 {
8 private var _realHelllo:String = "hello,flash";
9 public var gettimes:int = 0;//读取计数
10 public var settimes:int = 0;//设置计数
11
12 public function get hello():String{
13 gettimes++;
14 return _realHelllo ;
15 }
16
17 public function set hello(ns:String):void{
18 settimes++;
19 _realHello = ns;
20 }
21 }
22 }
23
24
25 //在另一个文档类中中生成astest02类的实例,并使用getter和setter方法。
26 //eg
27 package
28 {
29 import flash.display.Sprite;
30 import flash.display .Sprite;
31 public class as3test03 extends Sprite
32 {
33 var foo:as3test02 = new as3test02 ();
34 trace(foo.hello);//第一次取读
35 //输出:hello,flash
36 foo.hello = "Hi!";//第一次设置
37 trace(foo.hello);//第二次取读
38 //输出:Hi!
39 trace(foo.gettimes);//输出:2
40 trace(foo.settimes);//输出:1
41
42 }
43
44 }

 

《Flash ActionScript 3 殿堂之路》五,六 类,成员,访问控制

 

 

4.  包外类:
  (1)可以将包外类看成类文件的“私有类”。eg:可以将当前类中的一些复杂的逻辑单独抽出来
做成类。如果抽出来的逻辑只和这个当前的类相关,不需要外部介入,那么可以将这些类定义成包外类,便
这样便于代码的阅读和日后的修改维护。
  (2)包外类对外部完全不可见。
注意:使用包外类时,如果包外类的名字和同一个包内的类名重复,那么包外类将优先调用。

《Flash ActionScript 3 殿堂之路》五,六 类,成员,访问控制