我这里停电了。我以为我理解了这些原则,但我似乎无法再让它发挥作用了。我想让 DeleteButton 从一般的 Button 类继承。此 DeleteButton 应更改受保护的填充值并具有静态标签。这就是我所拥有的:
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)