Java - Pakiety
Dla uniknąć konfliktów nazw klas wprowadzono w Javie pojęcie pakietu (ang. packages). Pakiety w Javie stanowią podzbiór biblioteki: zawierają przeważnie klasy związane tematycznie, mogą też zawierać definicje interfejsów. Możemy tworzyć własne pakiety definiujące klasy i interfejsy przy użyciu wyrażenia package. Jeśli chcemy udostępnić własne klasy innym programistom, grupujemy je w jednym pakiecie, który oprócz definicji klas publicznych może zawierać definicje klas niepublicznych. Poszczególne klasy publiczne definiujemy w pliku o nazwie: NazwaKlasyPublicznej1.java NazwaKlasyPublicznej2.java ..... NazwaKlasyPublicznejX.java Każdy z plików posiada następującą strukturę: package NazwaPakietu; public class NazwaKlasyPublicznejN { // definicja pól danych i metod klasy } // ..... definicje klas niepublicznych Po skompilowaniu dla każdej klasy tworzone są pliki z kodem pośrednim (bajtowym) o nazwach: NazwaKlasyPublicznejN.class Przynależność klasy do pakietu determinuje położenie pliku z kodem bajtowym klasy w strukturze katalogów. Pliki zawierające klasy z pakietu NazwaPakietu muszą znajdować się w podkatalogu NazwaPakietu, a ten katalog powinien znajdować się w miejscu zdefiniowanym przez zmienną systemową CLASSPATH, która określa położenie plików z kodem bajtowym klas. Jeśli zmienna ta przyjmuje wartość: CLASSPATH = C:\JAVA\CLASSES\moje; to nasze skompilowane pliki znajdą się w katalogu: C:\JAVA\CLASSES\moje\NazwaPakietu Klasy należące do różnych pakietów mogą mieć identyczne nazwy, gdyż każdy pakiet tworzy własną przestrzeń nazw. Dostęp do klas danego pakietu uzyskujemy używając słowa kluczowego import. Przykład użycia klasy zadeklarowanej w pakiecie:import NazwaPakietu.NazwaKlasyPublicznejN; class MojaKlasa { ..... } Słowa import nie musimy używać, ale wówczas należy odwołać się bezpośrednio do klasy, przez dostęp kropkowy: class MojaKlasa { NazwaPakietu.NazwaKlasyPublicznejN.PoleX x = NazwaPakietu.NazwaKlasyPublicznejN.MetodaX(); } Aby mieć dostęp do wszystkich klas pakietu deklaracja import wygląda następująco: import NazwaPakietu.*; Klasy mogą być importowane nie tylko z dysku lokalnego. Mogą być też ładowane z Internetu, wtedy nazwa pakietu zaczyna się od odwróconej nazwy domeny. Np. dla domeny xyz.edu.pl pakiet będzie dostępny w Internecie pod nazwą: pl.edu.xyz.windows.java.classes.moje.NazwaPakietu
|