`
china34420
  • 浏览: 133930 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

命名空间的理解

阅读更多

一直以来对命名空间都比较迷茫,看书也是一知半解,今天又看了一遍帮助文档。慢慢有一点点理解了。
帮助文档:通过命名空间可以控制所创建的属性和方法的可见性。请将 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();
			
		}
	}
	
}
上面的使用其他访问控制说明符也应该可以实现,这里只是展示怎么使用命名空间。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics