flash as3.0中get与set的用法与案例代码

  我们知道,我们在编写类的时候应该尽量将它的属性和方法都隐藏起来,但当我们要调用某一个属性的时候,我们就不得不将它暴露出来,这是唯一的一种解决方法吗?答案是否定的,我们现在要求这样,有一个属性,我们想从外部调用它,也能够从外部访问它,但是不让它暴露到外部,这时我们如何去做呢?这里就要用到我们的get关键字。下面我们就来详细讲解一下get及set的使用方法。

  先来看一段脚本,

  复制代码代码如下:

  package {

  public class Setget {

  private var Str:String = "欢迎";

  public function get Data():String {

  return Str;

  }

  public function set Data(ns:String):void {

  Str= ns;

  }

  }

  }

  这段脚本并不长,但却很好的体现了get的使用方法,我们来看一下。首先我们定义了一个名称为huoqu的类,这个类中有一个私有属性ming,这个属性只能被当前类所访问。也就是说,我们无法在外部调用或访问这个属性。这时我们就要使用get来让这个属性能够被外部访问。那么我们先来看第一个get函数,这个函数有一个返回值,该返回值的类型是字符串。这个返回的数据就是一个我们隐藏的变量,通过这样的手法我们就达到了封装的目的。当我们调用这个变量的时候我们就可以直接调用ni这个函数,通过这个函数去操作变量。我们再来看set这个函数的使用方法。set顾名思义是设置的意思。我们如果没有写set函数,那么该属性只是一个只读属性。如果我们设置了这个set函数,那么该属性就可以读也可以设置。我们来看上面的脚本,这个函数接受了一个参数,该参数就是我们设置属性时要传递的值。请大家注意,set函数没有返回值,如果你设置了返回值,那么将会倒是编译错误。这就是类中声明定义的方法。

  下面我们再来看看如何使用两个函数。我们先看脚本。

  复制代码代码如下:

  package {

  import flash.display.MovieClip

  public class Setgets extends MovieClip{

  public function Setgets():void

  {

  init();

  }

  private function init():void

  {

  var _set:Setget = new Setget ();

  trace(_set.Data)

  _set.Data="光临";

  trace(_set.Data);

  }

  }

  }

  首先,要定义一个对象,该对象的类型是我们定义的类。然后我们调用ni这个方法,虽然调用这个方法,实际上是读取一个属性的值。第三句我们设置了改属性的值,注意,此时调用的实际上就是set函数,我们再输出这个属性值,发现输出的内容发生了改变。