Шта је интерфејс у ​​Јави са примером

Преглед садржаја:

Anonim

Шта је интерфејс у ​​Јави?

Интерфејс у Јава програмирање је дефинисана као апстрактна типа који се користи за означавање понашања класе. Јава интерфејс садржи статичке константе и апстрактне методе. Класа може да имплементира више интерфејса. У Јави се интерфејси декларишу помоћу кључне речи интерфејс. Све методе у интерфејсу су имплицитно јавне и апстрактне.

Синтакса за декларисање интерфејса

interface {//methods}

Да бисте користили интерфејс у ​​својој класи, додајте кључну реч „имплементира“ иза имена класе, а затим имена интерфејса.

Пример за примену интерфејса

class Dog implements Pet
interface RidableAnimal extends Animal, Vehicle

Кликните овде ако видео снимку није доступан

Зашто је потребан интерфејс?

Да бисмо боље разумели концепт Јава интерфејса, погледајмо пример. Класа „Медиа Плаиер“ има две поткласе: ЦД плејер и ДВД плејер. Сваки од њих има свој јединствени метод примене за пуштање музике.

Друга класа „комбинованих уређаја“ наслеђује и ЦД и ДВД (погледајте слику доле). Који метод игре треба да наследи? То може довести до озбиљних проблема са дизајном. Дакле, Јава не дозвољава вишеструко наслеђивање.

Узмимо сада још један пример Пса.

Претпоставимо да имате захтев где класа "пас" наслеђује класу "животиња" и "кућни љубимац" (погледајте слику испод). Али на Јави не можете проширити две класе. Па шта би ти урадио? Решење је Интерфаце.

Правилник за интерфејс каже,

  • Интерфејс је 100% апстрактна класа и има само апстрактне методе.
  • Класа може да имплементира било који број интерфејса.

Цласс Дог се може проширити на класу „Анимал“ и применити интерфејс као „Пет“.

Пример Јава интерфејса:

Корак 1) Копирајте следећи код у едитор.

интерфејс Пет {тест јавне празнине ();}класа Пас примењује Пет {јавни воид тест () {Систем.оут.принтлн („Примењена метода интерфејса“);}публиц статиц воид маин (Стринг аргс []) {Кућни љубимац п = нови пас ();п.тест ();}}

Корак 2) Спремите, компајлирајте и покрените код. Посматрајте излаз.

Разлика између класе и интерфејса

Класа Интерфејс
У класи можете направити инстанцу променљиве и креирати објекат. У интерфејсу не можете инстанцирати променљиву и креирати објекат.
Предавање може садржати конкретне (са имплементацијом) методе Интерфејс не може да садржи конкретне (са имплементацијом) методе

Спецификатори приступа који се користе са класама су приватни, заштићени и јавни.

У интерфејсу се користи само један спецификатор - јавни.

Када користити интерфејс и апстрактну класу?

  • Користите апстрактну класу када је потребно дефинисати шаблон за групу поткласа
  • Користите интерфејс када треба да се дефинише улога за друге класе, без обзира на стабло наслеђивања ових класа

Морате знати чињенице о интерфејсу

  • Јава класа може да имплементира више Јава интерфејса. Неопходно је да класа мора да имплементира све методе декларисане у интерфејсима.
  • Класа треба да замени све апстрактне методе декларисане у интерфејсу
  • Интерфејс омогућава слање поруке објекту без обзира којој класи припада.
  • Класа треба да обезбеди функционалност за методе декларисане у интерфејсу.
  • Све методе у интерфејсу су имплицитно јавне и апстрактне
  • Интерфејс се не може инстанцирати
  • Референца интерфејса може указивати на објекте његових класа имплементације
  • Интерфејс се може проширити од једног или више интерфејса. Класа може проширити само једну класу, али применити било који број интерфејса
  • Интерфејс не може да имплементира други интерфејс. Ако је потребно, мора проширити још један интерфејс.
  • Интерфејс који је декларисан унутар другог интерфејса назива се угнежђени интерфејс
  • У време декларације променљива интерфејса мора бити иницијализована. У супротном, компајлер ће избацити грешку.
  • Класа не може да имплементира два интерфејса у јави који имају методе са истим именом, али различитим типом повратка.

Резиме :

  • Класа која имплементира интерфејс мора да обезбеди функционалност за методе декларисане у интерфејсу
  • Све методе у интерфејсу су имплицитно јавне и апстрактне
  • Интерфејс се не може инстанцирати
  • Референца интерфејса може указивати на објекте његових класа имплементације
  • Интерфејс се може проширити од једног или више интерфејса. Класа може проширити само једну класу, али применити било који број интерфејса