ここで停電が発生しています。私はこれらの原則を理解したと思いましたが、もうそれを機能させることができないようです。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)