読者です 読者をやめる 読者になる 読者になる

Shut the fuck up and write some code

グダグダ言わずにコードを書きたいブログ

private変数の継承

AS3

超今更な内容ですが、いつも悩ましかったのでメモ。

常識だとは思うのですが、AS3からprivateで宣言したものは同一クラス内でしかアクセス出来ない。

ActionScript のオブジェクト指向プログラミング / クラス

インスタンス変数は、var または const として宣言されたかどうかにかかわらず、サブクラスではオーバーライドできません。ただし、getter および setter メソッドをオーバーライドすることにより、変数をオーバーライドするのに似た機能を実現できます。 詳しくは、get および set アクセサメソッドを参照してください。

子クラスから親クラスのprivatre変数にアクセスしたいなら、getter/setterを用意するか、継承先でも呼べるprotected関数を設定してやる。

例えばこんな感じ。

class testA {
  private var _maxNum:Number = 0;  
 protected function setMaxNum(value:Number):void{ 
  _maxNum = value;
 }
 protected function getMaxNum():Number{ 
  return _maxNum
 }
 public function testA(){
 }  
}

class testB extends testA{
 public function B(init:Number){
    setMaxNum(init);
    trace(getMaxNum());
 }
}

あまりスマートではないような気がするが…嗚呼、面倒だ。

広告を非表示にする