Интерфейс в Java с примером
Что такое интерфейс Java?
An Интерфейс в Java язык программирования определяется как абстрактный тип, используемый для определения поведения класса. А Java интерфейс содержит статические константы и абстрактные методы. Класс может реализовывать несколько интерфейсов. В Java, интерфейсы объявляются с использованием ключевого слова интерфейса. Все методы в интерфейсе неявно общедоступны и абстрактны.
Синтаксис объявления интерфейса
Чтобы использовать интерфейс в своем классе, добавьте ключевое слово «implements» после имени вашего класса, а затем имя интерфейса.
interface { //methods }
Пример реализации интерфейса
Теперь давайте разберемся с интерфейсом в Java с примером:
class Dog implements Pet
interface RidableAnimal extends Animal, Vehicle
Нажмите здесь если видео недоступно
Зачем нужен интерфейс?
Чтобы понять использование интерфейса в Java лучше, дай посмотреть Java пример интерфейса. Класс «Медиаплеер» имеет два подкласса: проигрыватель компакт-дисков и проигрыватель DVD. Каждый из них имеет свою уникальную реализацию интерфейса в Java метод воспроизведения музыки.
Другой класс «Комбо-привод» наследует как CD, так и DVD (см. изображение ниже). Какой игровой метод он должен наследовать? Это может вызвать серьезные проблемы с дизайном. И следовательно, Java не допускает многократного наследование.
Теперь давайте возьмем другой пример Dog.
Предположим, у вас есть требование, в котором класс «собака» наследует классы «животное» и «Домашнее животное» (см. изображение ниже). Но вы не можете расширить два класса в Java. Так что бы ты сделал? Решение — интерфейс.
В книге правил интерфейса говорится:
- A Java интерфейс реализации является 100% абстрактным классом и имеет только абстрактные методы.
- Класс может реализовывать любое количество интерфейсов.
Класс Dog может расширяться до класса Animal и реализовывать интерфейс как Pet.
Java Пример интерфейса:
Давайте разберемся с приведенной ниже интерфейсной программой в Java:
Шаг 1) Скопируйте следующий код в редактор.
interface Pet{ public void test(); } class Dog implements Pet{ public void test(){ System.out.println("Interface Method Implemented"); } public static void main(String args[]){ Pet p = new Dog(); p.test(); } }
Шаг 2) Сохраните, скомпилируйте и запустите код. Наблюдайте за выводом интерфейса в Java программа.
Разница между классом и интерфейсом
В классе вы можете создать экземпляр переменной и создать объект. | В интерфейсе вы не можете создать экземпляр переменной и создать объект. |
Класс может содержать конкретные (с реализацией) методы. | Интерфейс не может содержать конкретные (с реализацией) методы |
Спецификаторы доступа, используемые с классами, являются частными, защищенными и общедоступными. | В интерфейсе используется только один спецификатор — Public. |
Когда использовать интерфейс и абстрактный класс?
- Используйте абстрактный класс, когда необходимо определить шаблон для группы подклассов.
- Используйте интерфейс, когда необходимо определить роль для других классов, независимо от дерева наследования этих классов.
Необходимо знать факты об интерфейсе
- A Java класс может реализовать несколько Java Интерфейсы. Необходимо, чтобы класс реализовал все методы, объявленные в интерфейсах.
- Класс должен переопределять все абстрактные методы, объявленные в интерфейсе.
- Интерфейс позволяет отправлять сообщение объекту независимо от того, к какому классу он принадлежит.
- Класс должен обеспечивать функциональность методов, объявленных в интерфейсе.
- Все методы в интерфейсе неявно общедоступны и абстрактны.
- Интерфейс не может быть создан
- Ссылка на интерфейс может указывать на объекты реализующих его классов.
- Интерфейс может расширяться из одного или нескольких интерфейсов. Класс может расширять только один класс, но реализовывать любое количество интерфейсов.
- Интерфейс не может реализовывать другой интерфейс. При необходимости он должен расширить другой интерфейс.
- Интерфейс, объявленный внутри другого интерфейса, называется вложенным интерфейсом.
- Во время объявления переменная интерфейса должна быть инициализирована. В противном случае компилятор выдаст ошибку.
- Класс не может реализовать два интерфейса в Java, которые имеют методы с одинаковым именем, но разными типами возвращаемого значения.
Резюме:
- Класс, реализующий интерфейс, должен обеспечивать функциональность методов, объявленных в интерфейсе.
- Все методы в интерфейсе неявно общедоступны и абстрактны.
- Интерфейс не может быть создан
- Ссылка на интерфейс может указывать на объекты реализующих его классов.
- Интерфейс может расширяться из одного или нескольких интерфейсов. Класс может расширять только один класс, но реализовывать любое количество интерфейсов.