У меня есть затемнение. Я думал, что понял эти принципы, но я не могу больше работать. Я хочу, чтобы DeleteButton наследовал от общего класса Button. Этот DeleteButton должен изменять защищенные значения дополнений и иметь статическую метку. Это то, что у меня есть:AS3: переопределение защищенного var в подклассу
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 по-прежнему сконструирован со значениями по умолчанию для суперкласса. Я не могу понять, как это сделать. Что мне здесь не хватает?
Заранее спасибо.
Edit:
Я предполагаю, что у меня была реализация AS3 смешивается с РНР. Этот «эквивалентный» пример в 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. –