package 陳述式
更新:2007 年 11 月
建立 JScript 套件,使具名元件的封裝更為便利。
package pname { [[modifiers1] pmember1] ... [[modifiersN] pmemberN] }
引數
pname
必要項。要建立的套件名稱。modifiers1, ..., modifiersN
選擇項。控制 pmember 可視性和行為的修飾詞。pmember1, ..., pmemberN
選擇項。類別、介面或列舉型別定義。
備註
套件內部只允許類別、介面和列舉型別 (Enumeration)。套件成員可能會用可視性修飾詞標記,以幫助控制成員的存取。尤其,internal 修飾詞標記成員只有在目前套件內部才看得見。
一旦匯入套件之後,套件成員可以直接以名稱來存取,但是如果成員的名稱與匯入的範圍內可見的另一個宣告具有相同名稱時則不行。發生這種情況時,成員必須使用它的套件名稱來限定。
JScript 不支援巢狀套件的宣告;只有類別、介面和列舉型別宣告可以出現在套件內。套件名稱可以包含 '.' 字元,表示它在另一個套件中應該被視為巢狀。例如,名為 Outer 的套件和名為 Outer.Inner 的套件彼此不需要有特殊關係;它們都是在全域範圍的套件。然而,Outer.Inner 則表示應該是 Outer 內部的套件。
範例
下列範例定義三個簡單的套件,並將命名空間匯入程式碼中。通常,每個套件會在不同的組件中,允許套件內容的維護和散發。
// 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