private
もーほんとわからん!
オブジェクト指向が理解できないとか記述の仕方がわからないというのとは違う次元で理解できていない気がする。
まずはサンプル。
・asファイル
class privateTest {
private var msg_flg:Number;
var msg:Number = 10;
public function privateTest() {
msg_flg = 1;
}
}
次にflaファイル。
import privateTest;
var pTest:privateTest = new privateTest();
trace(pTest.msg_flg); // 説明1
trace(pTest.msg); // 説明2
trace(this.pTest.msg_flg); // 以下、説明3
trace(_root.pTest.msg_flg);
んじゃ、説明1から
trace(pTest._init_flg);
こいつはエラーになります。
メンバーがプライベートで、アクセスできません。
だそうです。
これは自分の想定通り。
次に説明2
trace(pTest.msg);
これはmsgがpublicなので、エラーでません。
ちゃんとtrace動きます。
最後に説明3
これが問題で、何か重要なことを自分が理解していないだけなのかよくわかりませんが、privateなはずのmsg_flgが取得できてしまいます。
なんでよ。
Flash OOP的に_rootやthisをそこに使うんじゃねーよ!とかいうのがあるのかどうか知りませんが、もしそうだとしても取得できちゃったらまずいでしょ。
getter/setterとか用意する必要なくなっちゃうじゃん。
ここのところ、自分がプログラマー脳じゃないってことを晒してるエントリーが多くなってるのは気のせいでしょうか。
