一直以来对命名空间都比较迷茫,看书也是一知半解,今天又看了一遍帮助文档。慢慢有一点点理解了。
帮助文档:通过命名空间可以控制所创建的属性和方法的可见性。请将 public、private、protected 和 internal 访问控制说明符视为内置的命名空间。如果这些预定义的访问控制说明符无法满足您的要求,您可以创建自己的命名空间。
我的理解:以上四种访问控制不能实现的情况,可以自定义访问控制说明符,这就是命名空间。反过来说,命名空间就是一种自定义的访问控制说明符。
以下实例来自帮助文档:(自己修改了一点点)
1. 定义命名空间
2. 将方法和属性存入命名空间。使用时只需要打开命名空间却可
帮助文档:通过命名空间可以控制所创建的属性和方法的可见性。请将 public、private、protected 和 internal 访问控制说明符视为内置的命名空间。如果这些预定义的访问控制说明符无法满足您的要求,您可以创建自己的命名空间。
我的理解:以上四种访问控制不能实现的情况,可以自定义访问控制说明符,这就是命名空间。反过来说,命名空间就是一种自定义的访问控制说明符。
以下实例来自帮助文档:(自己修改了一点点)
1. 定义命名空间
package example
{
//公共的命名空间
public namespace myInternal= "http://www.adobe.com/2006/actionscript/examples";
}
2. 将方法和属性存入命名空间。使用时只需要打开命名空间却可
package example.alpha
{
import example.myInternal;
/**
* ...
* @author zkl
*/
public class Utility
{
private static var _taskCounter:int = 0;
private static var _s:String="未定义";
public static function someTask():void {
_taskCounter++;
}
//将静态属性存入命名空间
myInternal static function get taskCounter():int{
return _taskCounter;
}
myInternal static function get wk():String {
return _s;
}
myInternal static function set wk(s:String):void {
_s = s;
}
//将静态方法存入命名空间
myInternal static function vars():void {
trace(_s);
}
//将实例方法存入命名空间
myInternal function f():void {
trace("实例方法");
}
}
}
3. 使用命名空间
package
{
import flash.display.MovieClip;
import example.myInternal;
import example.alpha.Utility;
/**
* ...
* @author zkl
*/
public class NamespaceUseCase extends MovieClip
{
private var u:Utility = new Utility;
public function NamespaceUseCase() {
//打开命名空间
use namespace myInternal;
//使用命名空间
Utility.someTask();
Utility.someTask();
trace(Utility.taskCounter);
//Utility.wk="我靠";
Utility.vars();
u.f();
}
}
}
上面的使用其他访问控制说明符也应该可以实现,这里只是展示怎么使用命名空间。