主题:  关于Flash自定义类的私有成员

musics52

职务:普通成员
等级:1
金币:0.0
发贴:3
注册:2003/5/26 18:43:19
#12007/4/26 15:47:20
我创建了一个Vechile类,代码如下:
//////////////////////////////
class Vehicle {
    private var _name:String;
    private var _numberPlate:String;
    private static var _counter:Number = 0;
    public function Vehicle(namevalue:String, numberPlatevalue:String) {
        _name = namevalue;
        _numberPlate = numberPlatevalue;
        _counter++;
        trace("车辆的名称是:"+_name+"\n车牌号是:"+_numberPlate);
    }
    public static function get counter():Number {
        return _counter;
    }
    public function get name() {
        return _name;
    }
    public function set name(a:String) {
        _name = a;
    }
    public function get numberPlate():String {
        return _numberPlate;
    }
    public function set numberPlate(a:String) {
        _numberPlate = a;
    }
    function drive() {
        trace(_name + "车开动了!");
    }
    function stop() {
        trace(_name + "车停止了!");
    }
}

//////////////////////////////
然后创建一个文件调用这个类,代码如下:
///////////////////////////////
trace(Vehicle.counter);
myVehicle1 = new Vehicle("东风标致307", "苏E7CXX");
trace(Vehicle.counter);
myVehicle2 = new Vehicle("江淮汽车", "京A5KXX");
trace(Vehicle.counter);
trace(myVehicle2.numberPlate);
myVehicle2.numberPlate = "沪A703XX";
trace(myVehicle2.numberPlate);
trace(myVehicle2._numberPlate);//照理应该不能输出
trace(myVehicle2._name);//照理应该不能输出
////////////////////////////////
根据定义,我这里_numberPlate和_name两个变量都是私有成员,应该不能输出的,可是运行的时候照输不误,不知道我到底错在哪里了?请高手指点一二,谢谢!!!!



musics52

职务:普通成员
等级:1
金币:0.0
发贴:3
注册:2003/5/26 18:43:19
#22007/4/26 16:01:03
简化一下问题:
类定义为:
class Vehicle {
    private var _name:String="sdff";
    private var _numberPlate:String="sdfsf";
}
调用代码为:
myVehicle2 = new Vehicle();
trace(myVehicle2._numberPlate);//照理应该不能输出
trace(myVehicle2._name);//照理应该不能输出
运行结果是输出这两个私有变量。可是私有变量不是不能在类外部调用吗?



多媒体专家

职务:普通成员
等级:1
金币:0.0
发贴:24
注册:2006/1/5 13:38:56
#32007/5/22 12:05:25
flash 9中测试没有问题