package-Anweisung
Erstellt ein JScript-Paket, mit dem benannte Komponenten auf einfache Weise verpackt werden können.
package pname {
[[modifiers1] pmember1]
...
[[modifiersN] pmemberN]
}
Argumente
pname
Erforderlich. Der Name des erstellten Pakets.modifiers1, ..., modifiersN
Optional. Modifizierer, die die Sichtbarkeit und das Verhalten von pmember steuern.pmember1, ..., pmemberN
Optional. Klassen-, Schnittstellen- oder Enumerationsdefinition.
Hinweise
Innerhalb eines Pakets sind nur Klassen, Schnittstellen und Enumerationen zugelassen. Paketmember können mit Sichtbarkeitsmodifizierern gekennzeichnet werden, um den Zugriff auf den Member zu steuern. Beispielsweise markiert der internal-Modifizerer einen Member so, dass dieser nur im aktuellen Paket sichtbar ist.
Sobald ein Paket importiert wurde, kann auf Paketmember direkt mit dem Namen zugegriffen werden, jedoch nicht, wenn der Member denselben Namen wie eine weitere Deklaration hat, die für den importierenden Gültigkeitsbereich sichtbar ist. In diesem Fall muss der Member mit seinem Paketnamen gekennzeichnet werden.
JScript unterstützt keine Deklaration geschachtelter Pakete, d. h., in einem Paket sind nur Klassen-, Schnittstellen- und Enumerationsdeklarationen zugelassen. Ein Paketname darf ein '.'-Zeichen enthalten, das angibt, dass er als in einem anderen Paket geschachtelt anzusehen ist. Zwischen einem Paket mit dem Namen Outer und einem Paket mit dem Namen Outer.Inner muss z. B. keine Beziehung bestehen. Bei beiden handelt es sich um Pakete im globalen Gültigkeitsbereich. Die Namen geben jedoch an, dass Outer.Inner als in Outer geschachtelt anzusehen ist
Beispiel
Im folgenden Beispiel wird veranschaulicht, wie drei einfache Pakete definiert werden und die Namespaces in das Skript importiert werden. Im Regelfall befindet sich jedes Paket in einer separaten Assembly, sodass das Verwalten und Verteilen des Paketinhalts möglich ist.
// 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);
Ausgabe dieses Skripts:
Greetings!
Bonjour!
Guten tag!
Eiffel Tower
meter
meter