サイトトップ

Director Flash 書籍 業務内容 プロフィール

Macromedia Flash非公式テクニカルノート

public属性キーワード

ID: FN0608006 Product: Flash

Platform: All
Version: Flash 9 and above

シンタックス
public var varName
public const kName
public function functionName() {
  // ステートメントを記述
}
public class className {
  // ステートメントを記述
}
public namespace nsName

引数
packageName:* ― パッケージの名前。

className:Classpublicに指定したいクラス名。

varName:*publicに指定したい変数名。public属性は、変数がクラスの一部であるかどうかにかかわらず、適用することができます。

kName:*publicに指定したい定数名。public属性は、定数がクラスの一部であるかどうかにかかわらず、適用することができます。

functionName:Functionpublicに指定したい関数またはメソッド名。public属性は、関数がクラスの一部であるかどうかにかかわらず、適用することができます。

nsName:Namespacepublicに指定したい名前空間名。public属性は、名前空間がクラスの一部であるかどうかにかかわらず、適用することができます。

説明
クラスあるいは変数、定数、メソッドが、どこからでも呼出しできる指定です。クラスや変数、メソッドはデフォルトが、internalです。internalは、現行パッケージ内でのみ可視であることを意味します。クラスあるいは変数、メソッドをどこからでも呼出しできるようにするには、public属性を用いなければなりません。


つぎの例は、クラスファイル内におけるpublic変数の使い方を示します[*1][*2]

package {
  class User {
    public var age:Number;
    public var fname:String;
  }
} // Userクラスの定義ここまで

var jimmy:User = new User();
jimmy.age = 27;
jimmy.fname = "jimmy";
trace(jimmy.age, jimmy.fname); // 出力: 27 jimmy

もしUserクラス内のpublic変数のいずれかをprivate変数に変更すると、その変数にUserクラスの外部からアクセスしようとしてもコンパイルエラーが発生します。

[訳者注*1] 原文のクラス定義には、つぎのようにpackageキーワードの記述がありません。

class User {
   public var age:Number;
   public var fname:String;
} // end of class User definition

[訳者注*2] クラスをpublicに指定しないと、パッケージの外部からアクセスができなくなります。たとえば、つぎのフレームアクションは、コンパイルエラーになります。

// フレームアクション
import myPackage.MyClass;
var obj:MyClass = new MyClass();   // コンパイルエラー

// ActionScript 3.0クラス定義ファイル: myPackage/MyClass.as
package myPackage {
  // public class MyClass {   // public指定でエラー解消
  class MyClass {
    function MyClass() {
      trace("called");
    }
  }
}

Player
ActionScript 3.0/Flash Player 9以降。

関連項目
class   internal   private   protected

出典
[ActionScript 3.0 Language Reference] > [Statements, Keywords & Directives] > [public attribute keyword]


作成者: 野中文雄
更新日: 2006年8月30日 [訳者注*2]を追加
作成日: 2006年8月27日


Copyright © 2001-2006 Fumio Nonaka.  All rights reserved.