AS3中get和set的使用方法
有人问为什么ActionScript中会出现get和set的用法,笔者认为究其产生原因是因为封装性
的体现,有个这两个功能,我们可以更好的实现封装。在面向对象也就是OOP编程中,封装的概念
极为重要,几乎贯穿了整个编程工作。我们本文就详细讨论如何更好的实现封装。
我们知道,我们在编写类的时候应该尽量将它的属性和方法都隐藏起来,但当我们要调用某
一个属性的时候,我们就不得不将它暴露出来,这是唯一的一种解决方法吗?答案是否定的,我们
现在要求这样,有一个属性,我们想从外部调用它,也能够从外部访问它,但是不让它暴露到外部,
这时我们如何去做呢?这里就要用到我们的get关键字。下面我们就来详细讲解一下get及set的使用
方法。
先来看一段脚本,
package {
public class huoqu {
private var ming:String = "中国";
public function get ni():String {
return ming;
}
public function set ni(ns:String):void {
ming = ns;
}
}
}
这段脚本并不长,但却很好的体现了get的使用方法,我们来看一下。首先我们定义了一个名称
为huoqu的类,这个类中有一个私有属性ming,这个属性只能被当前类所访问。也就是说,我们无法
在外部调用或访问这个属性。这时我们就要使用get来让这个属性能够被外部访问。那么我们先来看
第一个get函数,这个函数有一个返回值,该返回值的类型是字符串。这个返回的数据就是一个我们
隐藏的变量,通过这样的手法我们就达到了封装的目的。当我们调用这个变量的时候我们就可以直接
调用ni这个函数,通过这个函数去操作变量。我们再来看set这个函数的使用方法。set顾名思义是
设置的意思。我们如果没有写set函数,那么该属性只是一个只读属性。如果我们设置了这个set函数,
那么该属性就可以读也可以设置。我们来看上面的脚本,这个函数接受了一个参数,该参数就是我们
设置属性时要传递的值。请大家注意,set函数没有返回值,如果你设置了返回值,那么将会倒是编译
错误。这就是类中声明定义的方法。
下面我们再来看看如何使用两个函数。我们先看脚本。
var foo:huoqu = new huoqu();
trace(foo.ni)
foo.ni="我的天";
trace(foo.ni);
首先,要定义一个对象,该对象的类型是我们定义的类。然后我们调用ni这个方法,虽然调用这个
方法,实际上是读取一个属性的值。第三句我们设置了改属性的值,注意,此时调用的实际上就是set
函数,我们再输出这个属性值,发现输出的内容发生了改变。
以上就是get函数和set函数的使用方法,其实非常简单,大家只要自己尝试几次就能够熟练掌握
其中的技巧。