パブリック、プライベート、および静的なメソッドとプロパティ (メンバー) について

外部のスクリプトファイルに ActionScript クラスファイルを記述するとき、4 種類のメソッドとプロパティを作成できます。4 種類のメソッドとプロパティとは、パブリックメソッドとパブリックプロパティ、プライベートメソッドとプライベートプロパティ、パブリック静的メソッドとパブリック静的プロパティ、およびプライベート静的メソッドとプライベート静的プロパティです。このメソッドとプロパティを使用して、Flash で変数にアクセスする方法を定義し、特定のメソッドやプロパティにアクセスできるコードを指定することができます。

クラスベースのアプリケーションを作成するとき、アプリケーションの大きさに関係なく、メソッドまたはプロパティをプライベートにするかパブリックにするかを考慮することが特に重要です。考慮することで、コードのセキュリティを高めることができます。たとえば、User クラスを作成する場合に、このクラスを使用するユーザーに対して、ユーザー ID の変更を禁止するとします。クラスプロパティ ("インスタンスメンバー" とも呼ぶ) を private に設定すると、クラス内またはそのクラスのサブクラス内にあるコードに対して、このプロパティへのアクセスを制限することができ、ユーザーがこのプロパティを直接変更することができなくなります。

パブリックメソッドとパブリックプロパティ

public キーワードは、すべての呼び出し元で変数または関数にアクセスできることを示します。デフォルトでは変数および関数がパブリックとして扱われるため、this キーワードは主に形式上の使用され、変数が現在のスコープに存在することを示します。たとえば、this キーワードを使用して、プライベート変数または静的変数が含まれるコードブロックでパブリック変数を明確に区別する場合などです。this キーワードは、public キーワードまたは private キーワードと共に使用できます。

次の Sample クラスには、既に myMethod() という名前のパブリックメソッドがあります。

class Sample {
    private var ID:Number;
    public function myMethod():Void {
        this.ID = 15;
        trace(this.ID); // 15
        trace("myMethod");
    }
}

パブリックプロパティを追加する場合は、次のコード例に示すように、"private" ではなく "public" を使用します。

class Sample {
    private var ID:Number;
    public var email:String;
    public function myMethod():Void {
        trace("myMethod");
    }
}

この email プロパティはパブリックなので、Sample クラス内から変更できるだけでなく、FLA 内からも直接変更できます。

プライベートメソッドとプライベートプロパティ

private キーワードは、変数または関数を宣言または定義するクラス、またはそのクラスのサブクラスだけがこれらにアクセスできるように指定します。デフォルトでは、変数または関数がパブリックであり、すべての呼び出し元でアクセスできます。変数または関数へのアクセスを制限する場合は、次の例に示すように、this キーワードを使用します。

class Sample {
    private var ID:Number;
    public function myMethod():Void {
        this.ID = 15;
        trace(this.ID); // 15
        trace("myMethod");
    }
}

プライベートプロパティを前述のクラスに追加する場合は、var キーワードの前に private キーワードを指定します。

Sample クラスの外部からプライベート ID プロパティにアクセスすると、コンパイルエラーになり、[出力] パネルにメッセージが表示されます。このメッセージは、メンバーがプライベートで、アクセスできないことを示します。

静的メソッドと静的プロパティ

static キーワードは、変数または関数を、そのクラスを基に生成される各オブジェクトに対して生成するのではなく、クラスに対して 1 回だけ生成するよう指定します。静的クラスメンバーは、クラスのインスタンスを作成しなくてもアクセスできます。静的メソッドと静的プロパティのスコープは、パブリックでもプライベートでもかまいません。

静的メンバーは "クラスメンバー" とも呼ばれ、クラスのインスタンスではなくクラス自体に割り当てられます。クラスメソッドを呼び出したり、クラスプロパティにアクセスしたりするには、次のコードに示すように、クラスの特定のインスタンスではなくクラス名を参照します。

trace(Math.PI / 8); // 0.392699081698724

このコード 1 行を [アクション] パネルのスクリプトペインに入力すると、トレース結果が [出力] パネルに表示されます。

たとえば、前述の Sample クラスの例では、作成されたクラスのインスタンス数をトレースするための静的変数を作成することができます。そのコードを次に示します。

class Sample {
    public static var count:Number = 0;
    private var ID:Number;
    public var email:String;
    public function Sample() {
        Sample.count++;
        trace("count updated: " + Sample.count);
    }
    public function myMethod():Void {
        trace("myMethod");
    }
}

Sample クラスの新規インスタンスを作成するたびに、それまで定義された Sample クラスのインスタンスの総数がコンストラクタメソッドでトレース出力されます。

トップレベルの ActionScript クラスの中には、クラスメンバー (または静的メンバー) を持つものがあります。前のセクションで呼び出した Math.PI プロパティはこれに該当します。クラスメンバー (プロパティとメソッド) にアクセスするときは、クラスのインスタンスではなく、クラス名を呼び出します。つまり、静的プロパティと静的メソッドを使用するときには、クラスのインスタンスを作成する必要はありません。

たとえば、トップレベルの Math クラスは静的メソッドと静的プロパティのみで構成されています。このクラスのメソッドを呼び出すために、Math クラスのインスタンスを作成する必要はありません。その代わりに、単純に Math クラス自身のメソッドを呼び出します。次のコードでは、Math クラスの sqrt() メソッドを呼び出しています。

var squareRoot:Number = Math.sqrt(4);
trace(squareRoot); // 2

次のコードでは、Math クラスの max() メソッドを呼び出して、2 つの数値の大小を判定しています。

var largerNumber:Number = Math.max(10, 20);
trace(largerNumber); // 20

クラスメンバーの作成の詳細については、クラスメンバーについておよびクラスメンバーの使用を参照してください。

XML データとカスタムクラスファイルを使用して動的にメニューを作成する方法を示すサンプルについては、Flash サンプルページ (www.adobe.com/go/learn_fl_samples_jp) を参照してください。このサンプルでは、ActionScript XmlMenu() コンストラクタを呼び出し、XML メニューファイルへのパスおよび現在のタイムラインへの参照をパラメータとして渡します。"Samples" zip ファイルをダウンロードし解凍して、"ActionScript2.0/XML_Menu" フォルダに移動して次のサンプルにアクセスします。


 

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

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