public:指定类、变量、常量或方法可用于任何调用者
private:指定变量、常量或方法仅可供声明或定义它的类使用
protected:指定变量、常量、方法或命名空间只可用于定义它的类及该类的任何子类
internal:指定类、变量、常量或函数可用于同一包中的任何调用者
里我们先重点看一下public、private这两个属性关键字,从字面上理解public是公共的意思,说简单点就是任何地方都可以调用, private是私有的意思,就是说只有这个类中才可以调用,我们用一个例子做一个简单的说明,还是在上一节中我们用的FLA文件中的第一帧加上这个的代码:
import net.smilecn.MyClass;
var myClass:MyClass = new MyClass();
myClass.r = 3;//正确
myClss.s = 18;//错误
可以看到因为r声明为public,所以我们在外部调用是正确的,s声明为private,所以不直接在外部访问s这个变量,这就是public和private的区别,那我们要在外部改变s的值应该怎么做呢,我们可以这样做,在来修改MyClass类:
package net.smilecn{
public class MyClass{
public const PI:Number = 3.1415926;
public var r:Number;
private var s:Number;
public function MyClass(){
trace("这个我写的第一个类");
}
public function setSValue(value:Number):void{
s = value;
}
}
}
这样我们通过一个公共方法(方法就是函数的意思)设置了s的值,在FLA文件中这样调用:
myClass.setSValue(18);
就可以了,当然跟其它语言一样,我们也可以用get和set方法来读取或写入private变量的值:
package net.smilecn{
public class MyClass{
public const PI:Number = 3.1415926;
public var r:Number;
private var s:Number;
public function MyClass(){
trace("这个我写的第一个类");
}
public function set sValue(value:Number):void{
s = value;
}
public function get sValue():Number{
return s;
}
}
}
我们在调用的时候就可以用这样的语句了:
myClass.sValue =18;(当使用过set后可以这样操作)
var a = myClass.sValue;(当使用过get后可以这样操作)