Интерфейс в Java с Пример
Какво е интерфейс в Java?
An Интерфейс в Java езикът за програмиране се дефинира като абстрактен тип, използван за определяне на поведението на клас. А Java интерфейсът съдържа статични константи и абстрактни методи. Един клас може да реализира множество интерфейси. в Java, интерфейсите се декларират с помощта на ключовата дума interface. Всички методи в интерфейса са неявно публични и абстрактни.
Синтаксис за деклариране на интерфейс
За да използвате интерфейс във вашия клас, добавете ключовата дума „implements“ след името на вашия клас, последвана от името на интерфейса.
interface { //methods }
Пример за прилагане на интерфейс
Сега нека разберем интерфейса в Java с пример:
class Dog implements Pet
interface RidableAnimal extends Animal, Vehicle
Кликнете тук ако видеото не е достъпно
Защо е необходим интерфейс?
За да разберете използването на интерфейс в Java по-добре, нека видим Java пример за интерфейс. Класът “Медиен плейър” има два подкласа: CD плейър и DVD плейър. Всеки има своя уникална реализация на интерфейса Java метод за възпроизвеждане на музика.
Друг клас „Комбо устройство“ наследява както CD, така и DVD (вижте изображението по-долу). Кой метод на игра трябва да наследи? Това може да причини сериозни проблеми с дизайна. и следователно, Java не позволява множество наследство.
Сега нека вземем друг пример за Куче.
Да предположим, че имате изискване, при което клас „куче“ наследява клас „животно“ и „Домашен любимец“ (вижте изображението по-долу). Но не можете да разширите два класа Java. И така, какво бихте направили? Решението е интерфейс.
Правилникът за интерфейса казва,
- A Java implement интерфейсът е 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, които имат методи с едно и също име, но различен тип връщане.
Резюме:
- Класът, който имплементира интерфейса, трябва да осигури функционалност за методите, декларирани в интерфейса
- Всички методи в интерфейса са имплицитно публични и абстрактни
- Интерфейс не може да бъде създаден
- Една препратка към интерфейс може да сочи към обекти на нейните изпълняващи класове
- Един интерфейс може да се простира от един или много интерфейси. Един клас може да разшири само един клас, но да реализира произволен брой интерфейси