クラスでのメンバーアクセスの制御

デフォルトでは、クラスのプロパティやメソッドは他のどのクラスからもアクセスできます。クラスのすべてのメンバーは、デフォルトではパブリックになります。しかし、場合によっては、クラスのデータやメソッドを他のクラスからアクセスできないようにしたいこともあります。その場合は、保護するメンバーをプライベートにして、それを宣言または定義しているクラスからのみ利用できるようにします。

メンバーをパブリックまたはプライベートとして定義するには、public または private のメンバー属性を使用します。たとえば、次のコードでは、プライベート変数 (プロパティ) とプライベートメソッド (関数) を宣言しています。次のクラス (LoginClass) は、userName という名前のプライベートプロパティと、getUserName() という名前のプライベートメソッドを定義しています。

class LoginClass {
  private var userName:String;
  private function getUserName():String {
    return this.userName;
  }
  // コンストラクタ :
  public function LoginClass(user:String) {
    this.userName = user;
  }
}

プライベートメンバー (プロパティとメソッド) は、それらのメンバーを定義しているクラスとそのオリジナルクラスのサブクラスのみに対してアクセス可能です。オリジナルクラスのインスタンス、またはそのクラスのサブクラスのインスタンスは、プライベートに宣言されたプロパティとメソッドにはアクセスできません。つまり、プライベートメンバーはクラス定義内のみでアクセス可能であり、インスタンスレベルではアクセス可能ではないということです。次の例では、クラスファイルのメンバーアクセスを変更します。

メモ

 

次の実習は、例 : カスタムクラスの記述の一部です。この例を実施する必要がない場合は、www.helpexamples.com/flash/learnas/classes/ からクラスファイルをダウンロードしてもかまいません。

メンバーアクセスを制御するには :

  1. Flash オーサリングツールで "ClassA.as" および "ClassB.as" を開きます。
  2. 次の ActionScript コードに合致するように、"ClassA.as" ActionScript ファイルを変更します (太字の部分を変更します)。
    class com.adobe.utils.ClassA {
        private static var _className:String = "ClassA";
    
        public function ClassA() {
            trace("ClassA constructor");
        }
        public function doSomething():Void {
            trace("ClassA - doSomething()");
        }
    }
    

    上記のコードでは、両方のメソッド (ClassA コンストラクタと doSomething() メソッド) をパブリックに設定し、外部のスクリプトからアクセスできるようにします。静的変数 _className はプライベートに設定して、クラス内からだけアクセスできるようにし、外部のスクリプトからはアクセスできないようにします。

  3. "ClassB.as" ActionScript ファイルを変更し、ClassA クラスと同じメソッドとプロパティのアクセスを追加します。
  4. 次に進む前に、両方の ActionScript ファイルを保存します。

ClassA または ClassB のインスタンスはプライベートメンバーにアクセスできません。たとえば、次のコードは、FLA ファイルのタイムラインのフレーム 1 に追加したものですが、メソッドがプライベートであり、アクセスできないというコンパイルエラーになります。

import com.adobe.utils.ClassA;
var a:ClassA = new ClassA();
trace(a._className); // エラー。メンバーがプライベートで、アクセスできません。

メンバーアクセスの制御はコンパイル時のみの機能です。実行時には、Flash Player はプライベートメンバーとパブリックメンバーを区別しません。

これ以降のクラスファイル記述方法については、クラスのドキュメンテーションを参照してください。


 

このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート

現在のページ: http://livedocs.adobe.com/flash/9.0_jp/main/00000793.html