我在這裏停電。我認爲我理解了這些原則,但我似乎無法再使用它了。我想讓一個DeleteButton從一個普通的Button類繼承。這個DeleteButton應該改變受保護的填充值並且有一個靜態標籤。這是我有:AS3:在子類中重寫受保護的變量
public class Button
{
private var _labelText:String;
protected var _paddingX:Number = 10;
protected var _paddingY:Number = 5;
public function Button(labelText:String):void
{
_labelText = labelText;
}
}
public class DeleteButton extends Button
{
public function DeleteButton():void
{
_paddingX = 5;
_paddingY = 2;
super('x');
}
}
現在,我想在繼承類的改變_paddingX和_paddingY值將向上冒泡到超類。但他們沒有。 DeleteButton仍然使用超類的默認值構造。我無法弄清楚如何去做。我在這裏錯過了什麼?
在此先感謝。
編輯:
我想我有AS3的實現混合了PHP的。在PHP這種「等價」的例子是完全合法的:
class Button
{
protected $_paddingX = 10;
protected $_paddingY = 5;
public function __construct($label = '')
{
var_dump($label . ':');
var_dump($this->_paddingX);
var_dump($this->_paddingY);
echo '<br>';
}
}
class DeleteButton extends Button
{
public function __construct()
{
$this->_paddingX = 5;
$this->_paddingY = 2;
parent::__construct('x');
}
}
$button = new Button('browse');
$deleteButton = new DeleteButton();
// this outputs:
string(7) "browse:" int(10) int(5)
string(2) "x:" int(5) int(2)
謝謝supercrabtree。這實際上是我首先實現的,但我希望能繞過Button的構造函數的其他參數。 – 2009-12-15 12:51:28