我正在关注AS3中有关OOP和setter / getter以及覆盖的教程
在本教程中,我们创建了一个extends
sprite
的类,用作包含shape
和textfield
的按钮。
教程作者演示如果您使用该类的height
属性(从DisplayObject
一直继承,如下所示:
button.height = 100;
然后,按钮的shape
不仅会被放大,而且textfield
和其中的字体也会按比例放大。作者不希望这样,他希望只扩展shape
,同时保留字体大小。他通过以下方式做到了这一点:
override public function set height(h:Number):void {
// Custom code here.
}
这让我很困惑,因为仔细查看了Adobe的AS3 API参考,我看不到任何设置method
高度的DisplayObject
。我只能看到property
的{{1}}。
在进入height
之前,作者确实解释了override
,所以我理解了这个概念。但是,我无法理解你如何setters and getters
override
似乎不存在?
我原本假设能够覆盖任何东西必须在那里。
如果有人能够解释这种技巧,我将非常感激,或者请指点我对此进行更多阅读。
答案 0 :(得分:2)
属性并不总是公共变量。事实上,DisplayObject
的{{1}}属性同时具有setter和getter函数,因此存在setter并且可以被覆盖。