Хранение пакетов

Имя пакета отображает структуру каталога, в котором хранятся файлы *.class

D:\ work\ access\mypackage\MyClass.class

То есть путь к файлу ”кодируется” в имени пакета. Все файлы пакета хранятся в отдельном каталоге (папке). Каждый класс пакета должен иметь одинаковое начало:

package access.mypackage;

и хранится файл *.class в директории \access\mypackage\

Для уникальности первая часть имени доменное имя, записанное наоборот (или e-mail)

ru.mail.my.util

а первая часть пути - указывается в переменной окружения CLASSPATH

set CLASSPATH = D: \work;

Имена пакетов записываются с маленькой буквы

Если классы в нескольких местах, то нужно пути к пакетам разделять точкой с запятой

set CLASSPATH =.; D: \work\; D: \work\myutil.jar

Стандартные пакеты - в jdk\jre\lib\rt.jar (rt-это RunTime)

пакет java.lаng – подключен по умолчанию автоматически.

Если нужен файл x.class (в точке, где создается объект этого класса или при первом обращении к статическим членам класса) интерпретатор ищет каталог с файлом x.class:

- поиск в стандартных местах jdk\jre\lib

jdk\jre\ext

- берется CLASSPATH.

- берется имя пакета, точки заменяются на слэши.

- соединяются все элементы CLASSPATH и имена пакетов и там ищется x.class.

сли класс не найден-то выводится сообщение.

Вывод: Имя пакета –это его каталог.

Спецификаторы доступа Java

Доступ в пределах пакета(дружественный).

По умолчанию член класса доступен для всех классов текущего пакета. Без спецификатора. Вне пакета – он private.

Чтобы получить доступ к членам класса из другого пакета можно:

1) Объявить член класса public

2) Сделать пакетный доступ и разместить класс в том же пакете

3) Производные классы имеют доступ к protected членам (и к public тоже)

4) Написать методы для доступа get и set и сделать их public.

Пример: access\dessert\Cookie.java

package access.dessert;

public class Cookie {

public Cookie (){}

void bite (){}

}

/access/Dinner.java

import access.dessert.*;

public class Dinner {

public static void main (string[] args){

Cookie x = new Cookie ();

//x.bite(); - это ошибка!

}

}

Пакет по умолчанию: если классы в одном каталоге и не имеют пакета, то они входят в пакет по умолчанию для текущего каталога и обладают пакетным доступом друг другу. CLASSPATH должен содержать .( точку).


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: