privateが自分が思っていたほどprivateじゃなかった件について

今更、自分が凄い勘違いをしていたことに気づいてしまった。

privateキーワードは、可視性を当事者であるインスタンスのみに制限するものだと思ってた。
違うんだね。
privateが定義されているクラスのインスタンスからなら誰からでもアクセスできるんだね。
こんな凄い勘違い、今までよく問題にならなかったなと。。
思い込みが強すぎて、アクセスを試そうとすらしたことがなかった。
自分への戒めをこめてカミングアウトします。

package {
    public class MyClass {
        private var _privateValue : int;
        public function MyClass(v:int) {
            _privateValue = v;
        }

        public function printPrivateValue(c:MyClass) {
            /**
             * よそのインスタンスのprivateな変数にはアクセスできないと思ってた。
             *でもクラスが同じならアクセスできるんだね。
            */
            return c._privateValue;
        }
    }
}
//Client code
var c1 : MyClass = new MyClass(1);
var c2 : MyClass = new MyClass(2);
trace(c1.printPrivateValue(c2));
//output
2
カテゴリー: ActionScript3 パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です