package, instruction

Mise à jour : novembre 2007

Crée un package JScript qui permet d'empaqueter des composants nommés de façon pratique.


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

pname

Obligatoire. Nom du package qui est créé.

modifiers1, ..., modifiersN

Facultatif. Modificateurs qui contrôlent la visibilité et le comportement du pmember.

pmember1, ..., pmemberN

Facultatif. Définition de classe, d'interface ou d'énumération.

Seules des classes, des interfaces et des énumérations sont autorisées dans un package. Des membres de package peuvent être marqués avec des modificateurs de visibilité pour aider à contrôler l'accès au membre. Plus particulièrement, le modificateur internal marque un membre comme étant visible uniquement dans le package en cours.

Dès qu'un package a été importé, il est possible d'accéder directement aux membres du package par leur nom, sauf lorsqu'un membre a le même nom qu'une autre déclaration visible pour la portée dans laquelle a lieu l'importation. Lorsque c'est le cas, le membre doit être qualifié avec son nom de package.

JScript ne prend pas en charge la déclaration de packages imbriqués ; seules les déclarations de classe, d'interface et d'énumération peuvent apparaître dans un package. Un nom de package peut comprendre un caractère « . » pour indiquer qu'il est considéré comme imbriqué dans un autre package. Par exemple, un package appelé Outer et un package nommé Outer.Inner n'ont pas besoin d'être liés par une relation spéciale ; ils sont tous deux des packages au niveau de la portée globale. Toutefois, l'examen des noms montre que Outer.Inner est considéré comme imbriqué dans Outer.

L'exemple suivant définit trois packages simples et importe les espaces de noms dans le script. En général, chaque package doit figurer dans un assembly distinct pour permettre la maintenance et la distribution du contenu du package.

// 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);

Le résultat généré par ce script est le suivant :

Greetings!
Bonjour!
Guten tag!
Eiffel Tower
meter
meter

Ajouts de la communauté

Afficher: