Что такое интерфейс в Java с примером

Содержание:

Anonim

Что такое интерфейс в Java?

Интерфейс в Java программирование определяется как абстрактный тип , используемый для определения поведения класса. Интерфейс Java содержит статические константы и абстрактные методы. Класс может реализовывать несколько интерфейсов. В Java интерфейсы объявляются с помощью ключевого слова interface. Все методы в интерфейсе неявно общедоступны и абстрактны.

Синтаксис для объявления интерфейса

interface {//methods}

Чтобы использовать интерфейс в своем классе, добавьте ключевое слово «реализует» после имени вашего класса, за которым следует имя интерфейса.

Пример реализации интерфейса

class Dog implements Pet
interface RidableAnimal extends Animal, Vehicle

Нажмите здесь, если видео недоступно

Зачем нужен интерфейс?

Чтобы лучше понять концепцию интерфейса Java, рассмотрим пример. Класс «Media Player» имеет два подкласса: проигрыватель компакт-дисков и проигрыватель DVD. Каждый из них имеет свой уникальный метод воспроизведения музыки.

Другой класс «Комбинированный привод» наследует как CD, так и DVD (см. Изображение ниже). Какой метод воспроизведения он должен унаследовать? Это может вызвать серьезные проблемы с дизайном. Следовательно, Java не допускает множественного наследования.

Теперь возьмем еще один пример с собакой.

Предположим, у вас есть требование, в котором класс «собака» наследует классы «животное» и «домашнее животное» (см. Изображение ниже). Но вы не можете расширить два класса в Java. Так что бы ты сделал? Решение - Интерфейс.

В своде правил для интерфейса сказано:

  • Интерфейс представляет собой 100% абстрактный класс и имеет только абстрактные методы.
  • Класс может реализовывать любое количество интерфейсов.

Класс Dog можно расширить до класса «Animal» и реализовать интерфейс как «Pet».

Пример интерфейса Java:

Шаг 1) Скопируйте следующий код в редактор.

interface Pet {public void test ();}class Dog выполняет Pet {public void test () {System.out.println («Реализованный метод интерфейса»);}public static void main (String args []) {Pet p = новая собака ();p.test ();}}

Шаг 2) Сохраните, скомпилируйте и запустите код. Наблюдайте за выходом.

Разница между классом и интерфейсом

Учебный класс Интерфейс
В классе вы можете создать экземпляр переменной и создать объект. В интерфейсе вы не можете создать экземпляр переменной и создать объект.
Класс может содержать конкретные (с реализацией) методы Интерфейс не может содержать конкретные (с реализацией) методы

Спецификаторы доступа, используемые с классами, являются частными, защищенными и общедоступными.

В интерфейсе используется только один спецификатор - Public.

Когда использовать интерфейс и абстрактный класс?

  • Используйте абстрактный класс, когда необходимо определить шаблон для группы подклассов.
  • Используйте интерфейс, когда необходимо определить роль для других классов, независимо от дерева наследования этих классов.

Должен знать факты об интерфейсе

  • Класс Java может реализовывать несколько интерфейсов Java. Необходимо, чтобы класс реализовал все методы, объявленные в интерфейсах.
  • Класс должен переопределять все абстрактные методы, объявленные в интерфейсе.
  • Интерфейс позволяет отправлять сообщение объекту независимо от того, к какому классу он принадлежит.
  • Класс должен обеспечивать функциональность для методов, объявленных в интерфейсе.
  • Все методы в интерфейсе неявно общедоступны и абстрактны.
  • Интерфейс не может быть создан
  • Ссылка на интерфейс может указывать на объекты его реализующих классов.
  • Интерфейс может расширяться от одного или нескольких интерфейсов. Класс может расширять только один класс, но реализовывать любое количество интерфейсов
  • Интерфейс не может реализовать другой интерфейс. При необходимости он должен расширить другой интерфейс.
  • Интерфейс, объявленный внутри другого интерфейса, называется вложенным интерфейсом.
  • Во время объявления переменная интерфейса должна быть инициализирована. В противном случае компилятор выдаст ошибку.
  • Класс не может реализовать два интерфейса в java, у которых есть методы с одинаковым именем, но с другим типом возвращаемого значения.

Резюме :

  • Класс, реализующий интерфейс, должен обеспечивать функциональность для методов, объявленных в интерфейсе.
  • Все методы в интерфейсе неявно общедоступны и абстрактны.
  • Интерфейс не может быть создан
  • Ссылка на интерфейс может указывать на объекты его реализующих классов.
  • Интерфейс может расширяться от одного или нескольких интерфейсов. Класс может расширять только один класс, но реализовывать любое количество интерфейсов.