在as3中通常用set和get来实现一个属性。例如下面代码中类A有属性width,类B继承A,并覆盖了A的width属性。
在类中,关于私有变了_width,最好不要直接用,用this.width是比较安全的,因为当子类覆盖了get width或者set width的以后,用this.width仍然奏效,而使用_width的地方,覆盖就没有了作用。
package
{
import flash.display.Sprite;
public class Main extends Sprite
{
public function Main()
{
var a:A = new A();
var b:B = new B();
a.width = b.width = 1;
a.work();//结果1
b.work();//结果1,本来结果应该是2
}
}
}
class A
{
private var _width:int;
public function get width():int
{
return _width;
}
public function set width(value:int):void
{
_width = value;
}
public function work():void
{
//最好用trace(this.width);
trace(_width);
}
}
class B extends A
{
override public function get width():int
{
return super.width + 1;
}
}