`
nijiaben
  • 浏览: 129207 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

谈谈actionscript中的getter和setter

阅读更多
   大家在学习actionscript时也许也跟我一样碰到过一些疑问,希望大家都能把自己的疑问抽取出来,一起讨论讨论,共同进步。
    对于曾经主要学习java的程序员来说对于getter和setter有些不是很习惯的,java中很简单两段代码就了事了
    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

对于as初学者来说可能不是很清楚as中的getter和setter,当看到下面的代码时,可能会觉得疑惑
package
{	
	public class GetterSetterTest
	{
		private var name:String;
		public function GetterSetterTest()
		{
			
		}
		public function get name1():String{
			return this.name;
		}
		public function set name1(name:String):void{
			this.name=name;
		}
		public function getName():String{
			return this.name;
		}

	}
}

对于最后的那个函数getName()是跟java中一样的,对于上面的两个函数就不知道怎么回事了,这样的表示也会觉得很奇怪,的确,一开始我也觉得很怪异,怎么会有这样的表示方法呢,函数名居然用空格隔开了,get name1,类似这样的名字应该是一头雾水吧。其实这也不是很奇怪,这是as的一种改进,通过他可以使一些代码更简洁些,当然那方法中的代码是java中表达意思是一样的,下面看这段,它是如何访问的呢:
package
{
	import flash.display.Sprite;

	public class Test extends Sprite
	{
		public function Test()
		{
			
			var gt:GetterSetterTest=new GetterSetterTest();
			gt.name1="ljp;
			trace(gt.name1);
			trace(gt.getName());
		}
		
	}
}
我们通过创建一个测试类来测试我们刚刚的代码,我们可以通过
gt.name1="ljp;
来进行赋值,其实它是调用了set name1()方法,这样表达起来就简洁些了,当我们就是简单的
gt.name1;
的话就是调用get name1()方法,看起来应该很神奇吧对于这样的表达,至于为什么我们不能把方法名写成get name()和set name(),这点我也有点疑惑,如果这样写的话报的错是不兼容的覆盖和方法重复定义,如果哪位大侠知道,还望留下一脚。
1
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics