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とか用意する必要なくなっちゃうじゃん。


ここのところ、自分がプログラマー脳じゃないってことを晒してるエントリーが多くなってるのは気のせいでしょうか。

トラックバック(0)

このブログ記事に対するトラックバックURL: http://eternitydesign.net/mt/mt-tb.cgi/121

コメントフォーム

AUTHOR

名古屋でひっそりと活動中。
ホームページ制作、Flashコンテンツ制作など制作依頼がありましたらお気軽にご連絡ください。
ご希望の方には制作実績も同時にお伝えいたします。

TAG CLOUD