Что такое интерфейс в Java с примером
Что такое интерфейс?
Интерфейс подобен Java Class, но он имеет только статические константы и абстрактный метод. Java использует интерфейс для реализации множественного наследования. Класс Java может реализовывать несколько интерфейсов Java. Все методы в интерфейсе являются неявно публичными и абстрактными.
Синтаксис для объявления интерфейса
1 2 3 4 5 |
interface { //methods } |
Чтобы использовать интерфейс в своем классе, добавьте ключевое слово “реализует” после имени класса, за которым следует имя интерфейса.
Пример реализации интерфейса
1 2 3 |
class Dog implements Pet interface RidableAnimal extends Animal, Vehicle<strong> </strong> |
Зачем нужен интерфейс?
Чтобы лучше понять концепцию Java Interface, рассмотрим пример. Класс “Медиаплеер” имеет два подкласса: CD-плеер и DVD-плеер. Каждый из них имеет свой уникальный способ воспроизведения музыки.
Другой класс “Combo drive” наследует как CD, так и DVD (см. Изображение ниже). Какой метод игры следует наследовать? Это может вызвать серьезные проблемы с дизайном. И, следовательно, Java не допускает множественного наследования.
Теперь давайте возьмем еще один пример собаки.
Предположим, у вас есть требование, когда класс “собака” наследует класс “животное” и “домашнее животное” (см. Рисунок ниже). Но вы не можете расширять два класса в Java. Итак, что бы вы сделали? Решение – интерфейс.
В руководстве по интерфейсу говорится:
- Интерфейс представляет собой 100% абстрактный класс и имеет только абстрактные методы.
- Класс может реализовать любое количество интерфейсов.
Класс Dog может распространяться на класс “Животное” и реализовывать интерфейс как “Pet”.
Пример интерфейса Java:
Шаг 1) Скопируйте следующий код в редактор.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
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) Сохраните, скомпилируйте и запустите код. Наблюдайте за выходом.
Разница между классом и интерфейсом
Класс | Интерфейс |
В классе вы можете создать экземпляр переменной и создать объект. | В интерфейсе вы не можете создавать экземпляр переменной и создавать объект. |
Класс может содержать конкретные (с внедрением) методы | Интерфейс не может содержать конкретные (с внедрением) методы |
Спецификаторы доступа, используемые с классами, являются частными, защищенными и общедоступными. | В интерфейсе используется только один спецификатор – Public. |
Когда использовать интерфейс и абстрактный класс?
- Используйте абстрактный класс, когда шаблон должен быть определен для группы подклассов
- Используйте интерфейс, когда роль должна быть определена для других классов, независимо от дерева наследования этих классов
Должны знать факты о интерфейсе
- Класс Java может реализовывать несколько интерфейсов Java. Необходимо, чтобы класс должен реализовать все методы, объявленные в интерфейсах.
- Класс должен переопределять все абстрактные методы, объявленные в интерфейсе
- Интерфейс позволяет отправлять сообщение объекту без каких-либо классов.
- Класс должен обеспечивать функциональность для методов, объявленных в интерфейсе.
- Все методы в интерфейсе являются неявно публичными и абстрактными
- Интерфейс не может быть создан
- Ссылка на интерфейс может указывать на объекты его реализующих классов
- Интерфейс может распространяться на один или несколько интерфейсов. Класс может распространять только один класс, но реализовать любое количество интерфейсов
- Интерфейс не может реализовать другой интерфейс. При необходимости он должен расширять другой интерфейс.
- Интерфейс, который объявляется внутри другого интерфейса, называется вложенным интерфейсом
- Во время объявления переменная интерфейса должна быть инициализирована. В противном случае компилятор выдает ошибку.
- Класс не может реализовать два интерфейса в java, которые имеют методы с тем же именем, но с другим типом возврата.
Резюме :
- Класс, который реализует интерфейс, должен обеспечивать функциональность для методов, объявленных в интерфейсе
- Все методы в интерфейсе являются неявно публичными и абстрактными
- Интерфейс не может быть создан
- Ссылка на интерфейс может указывать на объекты его реализующих классов
- Интерфейс может распространяться на один или несколько интерфейсов. Класс может распространять только один класс, но реализовать любое количество интерфейсов
Ответить
Хотите присоединиться к обсуждению?Не стесняйтесь вносить свой вклад!