在 ActionScript 3.0 中,包是用命名空间实现的,但包和命名空间并不同义。在声明包时,
可以隐式创建一个特殊类型的命名空间并保证它在编译时是已知的。显式创建的命名空间在
编译时不必是已知的。
下面的示例使用 package 指令来创建一个包含单个类的简单包:
package samples
{
    public class SampleCode
   {
        public var sampleGreeting:String;
        public function sampleFunction()
        {
              trace(sampleGreeting + " from sampleFunction()");
        }
   }
}
在本例中,该类的名称是 SampleCode。由于该类位于 samples 包中,因此编译器在编译
时会自动将其类名称限定为完全限定名称:samples.SampleCode。编译器还限定任何属性
或方法的名称,以便 sampleGreeting 和 sampleFunction() 分别变成
samples.SampleCode.sampleGreeting 和 samples.SampleCode.sampleFunction()。
许多开发人员(尤其是那些具有 Java 编程背景的人)可能会选择只将类放在包的顶级。但是,
ActionScript 3.0 不但支持将类放在包的顶级,而且还支持将变量、函数甚至语句放在包的顶
级。此功能的一个高级用法是,在包的顶级定义一个命名空间,以便它对于该包中的所有类均
可用。但是,请注意,在包的顶级只允许使用两个访问说明符:public 和 internal。Java 允
许将嵌套类声明为私有,而 ActionScript 3.0 则不同,它既不支持嵌套类也不支持私有类。
但是,在其它许多方面,ActionScript 3.0 中的包与 Java 编程语言中的包非常相似。从上一
个示例可看出,完全限定的包引用点运算符 (.) 来表示,这与 Java 相同。可以用包将代码组
织成直观的分层结构,以供其他程序员使用。这样,您就可以将自己所创建的包与他人共享,
还可以在自己的代码中使用他人创建的包,从而推动了代码共享。
使用包还有助于确保所使用的标识符名称是唯一的,而且不与其它标识符名称冲突。事实
上,有些人认为这才是包的主要优点。例如,假设两个希望相互共享代码的程序员各创建了
一个名为 SampleCode 的类。如果没有包,这样就会造成名称冲突,唯一的解决方法就是重
命名其中的一个类。但是,使用包,就可以将其中的一个(最好是两个)类放在具有唯一名
称的包中,从而轻松地避免了名称冲突。

创建包
ActionScript 3.0 在包、类和源文件的组织方式上具有很大的灵活性。早期的 ActionScript
版本只允许每个源文件有一个类,而且要求源文件的名称与类名称匹配。 ActionScript 3.0
允许在一个源文件中包括多个类,但是,每个文件中只有一个类可供该文件外部的代码使
用。换言之,每个文件中只有一个类可以在包声明中进行声明。您必须在包定义的外部声明
其它任何类,以使这些类对于该源文件外部的代码不可见。在包定义内部声明的类的名称必
须与源文件的名称匹配。
ActionScript 3.0 在包的声明方式上也具有更大的灵活性。在早期的 ActionScript 版本中,
包只是表示可用来存放源文件的目录,您不必用 package 语句来声明包,而是在类声明中将
包名称包括在完全限定的类名称中。在 ActionScript 3.0 中,尽管包仍表示目录,但是它现
在不只包含类。在 ActionScript 3.0 中,使用 package 语句来声明包,这意味着您还可以
在包的顶级声明变量、函数和命名空间,甚至还可以在包的顶级包括可执行语句。如果在包
的顶级声明变量、函数或命名空间,则在顶级只能使用 public 和 internal 属性,并且每
个文件中只能有一个包级声明使用 public 属性 (无论该声明是类声明、变量声明、函数声
明还是命名空间声明)。
包的作用是组织代码并防止名称冲突。您不应将包的概念与类继承这一不相关的概念混淆。
位于同一个包中的两个类具有共同的命名空间,但是它们在其它任何方面都不必相关。同
样,在语义方面,嵌套包可以与其父包无关。

导入包
如果您希望使用位于某个包内部的特定类,则必须导入该包或该类。这与 ActionScript 2.0
不同,在 ActionScript 2.0 中,类的导入是可选的。
以本章前面的 SampleCode 类示例为例。如果该类位于名为 samples 的包中,那么,在使
用 SampleCode 类之前,您必须使用下列导入语句之一:
import samples.*;
或者
import samples.SampleCode;
通常,import 语句越具体越好。如果您只打算使用 samples 包中的 SampleCode 类,则应只导
入 SampleCode 类,而不应导入该类所属的整个包。导入整个包可能会导致意外的名称冲突。
还必须将定义包或类的源代码放在类路径 内部。类路径是用户定义的本地目录路径列表,它
决定了编译器将在何处搜索导入的包和类。类路径有时称为 “生成路径”或“源路径”。
在正确地导入类或包之后,可以使用类的完全限定名称 (samples.SampleCode),也可以只
使用类名称本身 (SampleCode)。
当同名的类、方法或属性会导致代码不明确时,完全限定的名称非常有用,但是,如果将它
用于所有的标识符,则会使代码变得难以管理。例如,在实例化 SampleCode 类的实例时,
使用完全限定的名称会导致代码冗长:
var mySample:samples.SampleCode = new samples.SampleCode();

转载于:https://www.cnblogs.com/beilon/archive/2008/05/03/1179982.html

ActionScript3学习笔记2-包相关推荐

  1. 04、Netty学习笔记—(黏包半包及协议设计解析)

    文章目录 一.粘包与半包 1.1.现象分析 1.1.1.粘包.半包情况分析 1.1.2.滑动窗口.MSS限制.Nagle算法介绍 1.2.粘包.半包现象复现 1.2.1.粘包复现 1.2.2.半包复现 ...

  2. Vue3学习笔记- NPM包管理工具

    导语   这篇分享是关于Vue3 系列的学习知识的整理的开始,能够对大家学习带来帮助.也是对自己能力的一种提升. 学习大纲 认识NPM 安装NPM 使用NPM NPM中级用法 了解package.js ...

  3. java学习笔记(八)----包,jar文件

    包  //建立包后同一个文件中的类都属于这个包,所有的类都必须按包名所对应的目录,在硬盘中存放.同一个包中的类在相互调用时,是不用指定包名的.    ---在编译时对于下面这个类,用这样的方法  ja ...

  4. .Net Core 学习笔记1——包、元包、框架

    .Net Core 是由NuGet包(package)组成的平台. 一起使用的多个包的集合:元包(Metapackage) package 包 (对应以前的程序集概念) Framework 框架 as ...

  5. Head First Java学习笔记(17):包、jar存档文件和部署

    Java的部署 Java程序是由一组类所组成的,那就是开发过程的输出. 部署的选择: 1.本机:整个程序都在用户的计算机上以独立.可携的GUI执行,并以可执行的Jar来部署. 2.两种之间的组合:应用 ...

  6. 马良建模学习笔记——软包制作十二

    本篇记录如下软包重点制作步骤: 1.画平面.转多边形,在面层级"插入"多个边,在边层级"连接"边,根据软包造型添加好几本的面及线 2.下图为大致的线布局,下面重 ...

  7. cobra mysql_Go学习笔记 : cobra 包简介

    cobra 是 go 语言的一个库,可以用于编写命令行工具.通常我们可以看到git pull .docker container start .apt install 等等这样命令,都可以很容易用co ...

  8. 马良建模学习笔记——软包制作十五

    本篇博客只记录如下软包中五瓣花的制作: 1.画一个4*4段的平面,在线层级拖出如下花瓣造型 2.用"切割"添加如下线条 3.连接点,如下图: 4.选中如下线条,向上拉起 5.选中如 ...

  9. 马良建模学习笔记——软包制作四

    本篇记录如下图软包制作步骤: 1.同马良建模前几篇文章一样,这个软包也是通过平面创建出来的,下图是根据软包特点在平面内添加造型线的最终的线条图(顶视图): 2.下图是在前视图对相应的点的位置调整: 3 ...

最新文章

  1. 常玩手机会导致手指残疾? 专家称没依据
  2. Bitcoin Unlimited发布BCH新版客户端1.5.0.0,包括CTOR和CDSV
  3. 如何对自己做好正确的人生规划
  4. 基于游戏开发的C语言大作业视频集锦
  5. 怎么看作业部落的html,HTML问题汇总
  6. wcf 双向 java_我的WCF之旅 (11): 再谈WCF的双向通讯-基于Http的双向通讯 V.S. 基于TCP的双向通讯...
  7. Kali linux 渗透测试(五)——渗透WPS攻击
  8. 哈佛幸福课--部分笔记
  9. Big Endian 和 Little Endian 详解
  10. 51单片机_7-1独立按键控制流水灯方向
  11. 有哪些比较流行的 C、C++和Java 的入门级项目?
  12. 最新免费ChatGPT中文镜像网站+整理了20多个-持续更新
  13. android自定义3d饼图,Android使用j4lChartAndroid插件绘制3D饼图
  14. JSON--就是键值对
  15. Hive QL的经典题详解
  16. 大数据运维工程师面试题目
  17. 《Evaluate the Malignancy of Pulmonary Nodules Using the 3D Deep Leaky Noisy-or Network》阅读笔记(二)
  18. 百度地图api自定义修改地图背景样式
  19. C++嵌套循环打印99乘法表
  20. Android综合教务管理系统

热门文章

  1. QPW 公告表(tf_notice)
  2. Linux主机通过直连线直连,【IT基础】网线的直连线与交叉线之间的区别
  3. valid floating point value什么意思_为什么 0.1 + 0.2 = 0.300000004?
  4. LeetCode 933.最近的请求次数
  5. python字符串解释_python基础之字符串详解
  6. python中可选参数是什么意思_Python如何定义有可选参数的元类
  7. C语言 | 结构体指针
  8. 从数据的角度解析计算机的发展,2017计算机知识考前冲刺试题及答案
  9. java比较equlse_java基础知识要点
  10. android官方文档中文版_Now in Android:01 - 如何掌握最新的 Android 技术?