Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие Java.doc
Скачиваний:
17
Добавлен:
07.09.2019
Размер:
569.34 Кб
Скачать

Уровни доступа.

Java предоставляет несколько механизмов для управления правами межклассового доступа.

private

модификатор

отсутствует

protected

public

тот же класс

да

да

да

да

подкласс в том же классе

нет

да

да

да

независимый класс в том же пакете

нет

да

да

да

подкласс в другом пакете

нет

нет

да

да

независимый класс в другом пакете

нет

нет

нет

да

Содержимое таблицы можно пояснить следующим образом. Все объявленное с модификатором public доступно отовсюду. Все объявленное с модификатором private доступно только в классе. Если при объявлении модификатор опущен, то компонент виден в подклассах и других классах этого пакета. Для обеспечения видимости компонента извне данного пакета, но только в подклассах данного суперкласса то надо использовать модификатор protected. И наконец, если вы хотите, чтобы элемент был доступен только подклассам, причем независимо от того, находятся ли они в данном пакете или нет - используйте комбинацию private protected.

 

Интерфейсы

Ключевое слово interface осуществляет, дальше, концепцию, реализованную в abstract. Оно позволяет разработчику объявить форму (структуру) класса: поля, косвенно являющиеся static и final (не могут быть изменены реализующим классом), имена методов, списки аргументов, возвращаемые типы, но не содержит тела методов. Можно сказать, что в интерфейсе все методы абстрактные, но слово abstract писать не надо. Константы всегда статические, но слова static и final указывать не нужно. Т.о. интерфейсы похожи на классы, но в отличие от последних у интерфейсов нет переменных представителей, а в объявлениях методов отсутствует реализация. Ключевое слово interface полностью освобождает класс от его реализации. Интерфейсы Java созданы для поддержки динамического выбора методов во время выполнения программы. Для каждого интерфейса должен существовать класс его реализующий. Этот класс, должен иметь полный набор public методов определенных интерфейсом. После определения интерфейса реализовать его может любое число классов. И наоборот, класс может реализовывать любое число интерфейсов.

Реализация интерфейса может быть неполной, некоторые методы интерфейса реализованы, а другие — нет. Такая реализация — абстрактный класс, его обязательно надо пометить модификатором abstract.

Для создания интерфейса надо вместо ключевого слова class использовать слово interface. Общая форма объявления интерфейса имеет вид:

[public] interface имя{

type var_name_1 = значение;

type var_nameN = значение;

возвращаемый_тип metod1(список_параметров);

возвращаемый_тип metodM(список_параметров);

}

Если в объявлении интерфейса используется ключевое слово public (если этот интерфейс определен в файле с тем же именем), интерфейс может использоваться любым другим классом. Иначе, он доступен только классам членам пакета, в котором он объявлен.