大家在学习actionscript时也许也跟我一样碰到过一些疑问,希望大家都能把自己的疑问抽取出来,一起讨论讨论,共同进步。
对于曾经主要学习java的程序员来说对于getter和setter有些不是很习惯的,java中很简单两段代码就了事了
对于as初学者来说可能不是很清楚as中的getter和setter,当看到下面的代码时,可能会觉得疑惑
对于最后的那个函数getName()是跟java中一样的,对于上面的两个函数就不知道怎么回事了,这样的表示也会觉得很奇怪,的确,一开始我也觉得很怪异,怎么会有这样的表示方法呢,函数名居然用空格隔开了,get name1,类似这样的名字应该是一头雾水吧。其实这也不是很奇怪,这是as的一种改进,通过他可以使一些代码更简洁些,当然那方法中的代码是java中表达意思是一样的,下面看这段,它是如何访问的呢:
对于曾经主要学习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(),这点我也有点疑惑,如果这样写的话报的错是不兼容的覆盖和方法重复定义,如果哪位大侠知道,还望留下一脚。