
- •Jdk и виртуальная машина java
- •Примитивные типы
- •Классы java. Понятие объекта.
- •Основные принципы ооп
- •Передача параметров по значению и по ссылке
- •Типы комментариев в java.
- •Модификаторы доступа
- •Наследование
- •Интерфейсы
- •Абстрактные классы
- •Константы
- •Работа со строками
- •Коллекции
- •Утилиты
- •Swing компоненты
- •Менеджер расположения
- •Система обработки событий
- •Потоки ввода и вывода
- •Сериализация
- •Обработка исключительных ситуаций
- •Вложенные классы
Интерфейсы
Наследование определяет очень важную роль в экономии времени и энергии программистов, многократно использующих существующий код. Большинство реальных программ жизни использует понятие, названное множественным наследованием. При множественном наследовании, мы можем унаследовать методы и свойства от нескольких различных классов. Java не поддерживает множественное наследование. Однако, увидев важность множественного наследования, Java вводит понятие интерфейса.
Понятие интерфейса - одна из главных особенностей в Java. Интерфейс позволяет классу обойти наследование от одного предка. Программы Java одновременно могут унаследовать один класс, но могут осуществить несколько интерфейсов. Интерфейс не может иметь никаких конкретных методов. Интерфейсы также используются, чтобы определить набор констант, которые могут использоваться классами. Короче говоря, интерфейс - шаблон поведения (в форме методов), который должны осуществить другие классы. Это означает, что мы имеем пустое тело метода.
Интерфейс очень похож на определение класса. Вот общая форма интерфейса:
access interface name{
return-type method-name1(parameter-list);
return-type method-name2(parameter-list);
type final-varnamel = value;
type final-varname2 = value;
// ..
return-type method-nameN(parameter-list);
type final-varnameN = value; }
Здесь доступ осуществляется с помощью public или вообще не используется. Когда не используется никакой спецификатор доступа, то применяется доступ по умолчанию и интерфейс доступен только другим членам пакета, в котором он объявлен.
Когда интерфейс объявляется как public, то он может использоваться любым другим кодом, name - имя интерфейса, и может быть любым допустимым идентификатором. Заметьте, что объявленные методы пустые. Они заканчивают точкой с запятой после списка параметров. Они, по существу, являются абстрактными методами; не может быть никакого заданного по умолчанию выполнения любого метода, указанного в пределах интерфейса. Каждый класс, который включает интерфейс, должен осуществлять все методы.
Переменные могут быть объявлены в объявлении интерфейса. Они являются неявно final и static, означая, что они не могут быть изменены наследующим классом. Они должны также быть инициализированы с постоянным значением.
Абстрактные классы
В Java есть возможность объявлять абстрактные классы – эти классы представляют собой не до конца реализованную модель какого-либо предмета. Скажем, вы знаете, что у предмета должен быть определённый метод, но по каким-то причинам, не хотите писать его реализацию в данном классе. Вы можете объявить метод абстрактным,в этом случае вы не пишите его реализацию. Сам код метода вы сможете написать в классах-наследниках, переопределив данный метод. Стоит учесть, что если класс имеет хоть один асбтрактный метод, то его самого надо объявлять с модификатором abstract. Объект такого класса нельзя будет создать, поэтому смысл абстрактных классов в том, чтобы сформировать иерархию наследования с постепенной детализацией модели.
В Java запрещено множественное наследование. Т.е. класс можно унаследовать только от одного класса родителя. Это сделано, чтобы избежать путаницы с наследованием идентичных методов. Однако создатели Java предложили альтернативу множественному наследованию: интерфейсы. Интерфейс представляет собой некий облегчённый аналог класса: он не содержит полей и не содержит методов с реализацией, при этом сами методы не надо объявлять с модификатором abstract.
instanceof проверяет, является ли тип во время выполнения первого параметра назначением, совместимым со вторым параметром.
Пакеты
Когда классов становится много, их удобнее хранить в виде некоторой иерархии. В Java применяется подход, аналогичный файловой системе: вместо файлов выступают классы, вместо папок – пакеты (package). Пакеты могут быть вложены в другие пакеты, за счёт этого можно формировать иерархию хранения классов.
Чтобы правильно использовать члены пакета, мы должны явно включить пакет в программу Java. Это делается с помощью инструкции "import" как показано ниже:
import package_name.*;
Символ '*' используется, чтобы импортировать все классы текущего пакета (здесь раскаде_nате). Вышеупомянутая запись включает все классы / интерфейсы, которые найдены в пакете. Чтобы включать определенный класс / интерфейс, найденный в пакете использует примечание:
import package_name.class_name;
Запись выше импортирует только указанный член класса, а не все члены класса.
Таким образом, мы можем включить все или только некоторые из членов в пакете.