package ステートメント

JScript パッケージを作成して、名前付きのコンポーネントを扱いやすいようにパッケージ化します。

package pname {
   [[modifiers1] pmember1]
   ...
   [[modifiersN] pmemberN]
}

引数

  • pname
    必ず指定します。 作成するパッケージの名前。

  • modifiers1, ..., modifiersN
    省略可能です。 pmember の参照可能範囲と動作を制御する修飾子。

  • pmember1, ..., pmemberN
    省略可能です。 クラス、インターフェイス、または列挙型の定義。

解説

パッケージ内では、クラス、インターフェイス、および列挙型だけが許可されています。 パッケージ メンバーには、可視性修飾子が指定されて、アクセスが制御されている場合があります。 特に、internal 修飾子は、メンバーを現在のパッケージ内だけで参照できるように指定します。

パッケージがインポートされると、パッケージ メンバーに名前で直接アクセスできるようになります。ただし、インポートするスコープに参照可能な同じ名前を持つ宣言が他にある場合は、名前だけではアクセスできません。 この場合は、パッケージ名を使用してメンバーを修飾する必要があります。

JScript は、入れ子になったパッケージの宣言をサポートしていません。パッケージの内部には、クラス、インターフェイス、および列挙型の宣言だけを指定できます。 パッケージ名に '.' 文字を含めることによって、他のパッケージに入れ子になることを示すことができます。 たとえば、Outer というパッケージと Outer.Inner というパッケージには、相互に特別な関係は必要ありません。どちらもグローバル スコープのパッケージです。 ただし、Outer.Inner は Outer に入れ子になると見なされることを暗黙的に示しています。

使用例

次の例では、3 つの簡単なパッケージを定義し、スクリプトに名前空間をインポートします。 一般的に、各パッケージは個別のアセンブリに存在し、パッケージ内容を保守および配布できるようになっています。

// Create a simple package containing a class with a single field (Hello).
package Deutschland {
   class Greeting {
      static var Hello : String = "Guten tag!";
   }
};
// Create another simple package containing two classes.
// The class Greeting has the field Hello.
// The class Units has the field distance.
package France {
   public class Greeting {
      static var Hello : String = "Bonjour!";
   }
   public class Units {
      static var distance : String = "meter";
   }
};
// Use another package for more specific information.
package France.Paris {
   public class Landmark {
      static var Tower : String = "Eiffel Tower";
   }
};

// Declare a local class that shadows the imported classes.
class Greeting {
   static var Hello : String = "Greetings!";
}

// Import the Deutschland, France, and France.Paris packages.
import Deutschland;
import France;
import France.Paris;

// Access the package members with fully qualified names.
print(Greeting.Hello);
print(France.Greeting.Hello);
print(Deutschland.Greeting.Hello);
print(France.Paris.Landmark.Tower);
// The Units class is not shadowed, so it can be accessed with or without a fully qualified name.
print(Units.distance);
print(France.Units.distance);

このスクリプトの出力は次のようになります。

Greetings!
Bonjour!
Guten tag!
Eiffel Tower
meter
meter

必要条件

バージョン .NET

参照

参照

import ステートメント

internal 修飾子

その他の技術情報

修飾子