- •Java - объектно-ориентированный язык
- •Виртуальная Java-машина.
- •Алфавит языка Java
- •Типы данных
- •Числа высокой точности
- •Переменные в Java
- •Объявление переменной
- •Область действия и время жизни переменной
- •Операции в Java
- •Арифметические операции
- •Логические операции
- •Побитовые операции
- •Операции сдвига
- •Тернарный оператор ?:
- •Оператор запятая
- •Одномерные массивы
- •Многомерные массивы
- •Функции
- •Класс Поля и методы
- •Модификаторы доступа
- •Инициализация и очистка
- •Перегрузка методов
- •Ключевое слово this
- •Вызов конструктора из конструктора
- •Использование объектов в качестве параметров
- •Ключевое слово static
- •Спецификатор final
- •Вложенные и внутренние классы
- •Сборщик «мусора»
- •Как работает сборщик мусора
- •Наследование
- •Основы наследования
- •Использование ключевого слова super
- •Использование super для вызова конструктора суперкласса
- •Использование super для доступа к скрытым членам суперкласса
- •Конструкторы при наследовании
- •Динамическая диспетчеризация методов
- •Абстрактные классы
- •Использование final с наследованием
- •Использование final для отказа от переопределения
- •Использование final для отмены наследования
- •Класс Object
- •Пакеты и интерфейсы Пакеты
- •Оператор package
- •Оператор import
- •Уровни доступа.
- •Интерфейсы
- •Оператор implements
- •Частичные реализации
- •“Множественное” наследование в Java
- •Конфликты имен при комбинировании интерфейсов
- •Расширение интерфейса
- •Группировка констант
- •Инициализирование полей в интерфейсах
- •Вложенные интерфейсы
- •Стандартный ввод/вывод
- •Чтение из стандартного ввода
- •Замена System.Out на PrintWriter
- •Первое приложение Java
- •Исключительные ситуации. Обработка исключений
- •Типы исключений
Уровни доступа.
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 (если этот интерфейс определен в файле с тем же именем), интерфейс может использоваться любым другим классом. Иначе, он доступен только классам членам пакета, в котором он объявлен.