Какво е интерфейс в Java?
Един интерфейс в Java програмиране се определя като абстрактен тип използва за определяне на поведението на един клас. Интерфейсът на Java съдържа статични константи и абстрактни методи. Един клас може да реализира множество интерфейси. В Java интерфейсите се декларират с помощта на ключовата дума интерфейс. Всички методи в интерфейса са имплицитно публични и абстрактни.
Синтаксис за деклариране на интерфейс
interface {//methods}
За да използвате интерфейс във вашия клас, добавете ключовата дума "implements" след името на вашия клас, последвано от името на интерфейса.
Пример за внедряване на интерфейс
class Dog implements Pet
interface RidableAnimal extends Animal, Vehicle
Щракнете тук, ако видеоклипът не е достъпен
Защо се изисква интерфейс?
За да разберете по-добре концепцията на Java Interface, нека да видим пример. Класът "Media Player" има два подкласа: CD плейър и DVD плейър. Всяка има свой уникален метод за изпълнение за възпроизвеждане на музика.
Друг клас "комбинирано устройство" наследява CD и DVD (вижте изображението по-долу). Кой метод на възпроизвеждане трябва да наследи? Това може да причини сериозни проблеми с дизайна. И следователно, Java не позволява многократно наследяване.
Сега нека вземем друг пример за Куче.
Да предположим, че имате изискване, когато клас "куче" наследява клас "животно" и "домашен любимец" (вижте изображението по-долу). Но не можете да разширите два класа в Java. И така, какво бихте направили? Решението е Interface.
В правилника за интерфейса се казва,
- Интерфейсът е 100% абстрактен клас и има само абстрактни методи.
- Класът може да реализира произволен брой интерфейси.
Class Dog може да се разшири до клас "Animal" и да приложи интерфейс като "Pet".
Пример за интерфейс на Java:
Стъпка 1) Копирайте следния код в редактор.
интерфейс Pet {публичен тест за невалидност ();}клас Куче изпълнява Pet {публичен тест за невалидност () {System.out.println ("Приложен метод на интерфейс");}публична статична void main (String args []) {Домашен любимец p = ново куче ();p.test ();}}
Стъпка 2) Запазете, компилирайте и стартирайте кода. Наблюдавайте изхода.
Разлика между клас и интерфейс
Клас | Интерфейс |
---|---|
В клас можете да създадете инстанция на променлива и да създадете обект. | В интерфейс не можете да създадете инстанция на променлива и да създадете обект. |
Класът може да съдържа конкретни (с изпълнение) методи | Интерфейсът не може да съдържа конкретни (с изпълнение) методи |
Спецификаторите за достъп, използвани с класовете, са частни, защитени и публични. |
В интерфейса се използва само един спецификатор - Public. |
Кога да използвам интерфейс и абстрактен клас?
- Използвайте абстрактен клас, когато шаблонът трябва да бъде дефиниран за група подкласове
- Използвайте интерфейс, когато трябва да се определи роля за други класове, независимо от дървото за наследяване на тези класове
Трябва да знаете факти за интерфейса
- Клас Java може да реализира множество Java интерфейси. Необходимо е класът да реализира всички методи, декларирани в интерфейсите.
- Класът трябва да замени всички абстрактни методи, декларирани в интерфейса
- Интерфейсът позволява изпращане на съобщение до обект, без да се засяга към кои класове принадлежи.
- Класът трябва да предоставя функционалност за декларираните в интерфейса методи.
- Всички методи в интерфейса са имплицитно публични и абстрактни
- Интерфейс не може да бъде създаден
- Препратката към интерфейс може да сочи към обекти от нейните изпълняващи класове
- Интерфейсът може да се простира от един или много интерфейси. Класът може да разшири само един клас, но да изпълнява произволен брой интерфейси
- Интерфейсът не може да реализира друг интерфейс. Той трябва да разшири друг интерфейс, ако е необходимо.
- Интерфейс, който е деклариран в друг интерфейс, се нарича вложен интерфейс
- По време на декларирането променливата на интерфейса трябва да бъде инициализирана. В противен случай компилаторът ще изведе грешка.
- Класът не може да реализира два интерфейса в java, които имат методи със същото име, но различен тип връщане.
Резюме :
- Класът, който реализира интерфейса, трябва да предоставя функционалност за декларираните в интерфейса методи
- Всички методи в интерфейса са имплицитно публични и абстрактни
- Интерфейс не може да бъде създаден
- Препратката към интерфейс може да сочи към обекти от нейните изпълняващи класове
- Интерфейсът може да се простира от един или много интерфейси. Класът може да разшири само един клас, но да изпълнява произволен брой интерфейси