Co to jest interfejs w Javie z przykładem

Spisie treści:

Anonim

Co to jest interfejs w Javie?

Interfejs Java programowanie jest zdefiniowany jako abstrakcyjne typu stosowanego w celu określenia zachowania klasy. Interfejs Java zawiera stałe statyczne i metody abstrakcyjne. Klasa może implementować wiele interfejsów. W Javie interfejsy są deklarowane przy użyciu słowa kluczowego interface. Wszystkie metody w interfejsie są niejawnie publiczne i abstrakcyjne.

Składnia deklarowania interfejsu

interface {//methods}

Aby użyć interfejsu w swojej klasie, dodaj słowo kluczowe „implements” po nazwie klasy, po której następuje nazwa interfejsu.

Przykład implementacji interfejsu

class Dog implements Pet
interface RidableAnimal extends Animal, Vehicle

Kliknij tutaj, jeśli wideo nie jest dostępne

Dlaczego wymagany jest interfejs?

Aby lepiej zrozumieć koncepcję interfejsu Java, zobaczmy przykład. Klasa „Media Player” ma dwie podklasy: odtwarzacz CD i odtwarzacz DVD. Każdy ma swoją unikalną metodę wykonania do odtwarzania muzyki.

Inna klasa „Napęd Combo” dziedziczy zarówno dyski CD, jak i DVD (patrz ilustracja poniżej). Którą metodę gry powinien dziedziczyć? Może to spowodować poważne problemy projektowe. Dlatego Java nie zezwala na wielokrotne dziedziczenie.

Teraz weźmy inny przykład psa.

Załóżmy, że masz wymaganie, w którym klasa „pies” dziedziczy klasę „zwierzę” i „zwierzak” (patrz rysunek poniżej). Ale nie możesz rozszerzyć dwóch klas w Javie. Więc co byś zrobił? Rozwiązaniem jest interfejs.

Zbiór przepisów dotyczących interfejsu mówi:

  • Interfejs jest w 100% klasą abstrakcyjną i ma tylko abstrakcyjne metody.
  • Klasa może implementować dowolną liczbę interfejsów.

Class Dog może rozszerzyć do klasy „Animal” i zaimplementować interfejs jako „Pet”.

Przykład interfejsu Java:

Krok 1) Skopiuj poniższy kod do edytora.

interface Pet {public void test ();}class Dog implements Pet {public void test () {System.out.println ("Zaimplementowano metodę interfejsu");}public static void main (String args []) {Pet p = new Dog ();p.test ();}}

Krok 2) Zapisz, skompiluj i uruchom kod. Obserwuj dane wyjściowe.

Różnica między klasą a interfejsem

Klasa Berło
W klasie można utworzyć instancję zmiennej i utworzyć obiekt. W interfejsie nie można utworzyć wystąpienia zmiennej i utworzyć obiektu.
Klasa może zawierać konkretne (z implementacją) metody Interfejs nie może zawierać konkretnych (z implementacją) metod

Specyfikatory dostępu używane z klasami są prywatne, chronione i publiczne.

W interfejsie używany jest tylko jeden specyfikator - Public.

Kiedy używać interfejsu i klasy abstrakcyjnej?

  • Użyj klasy abstrakcyjnej, gdy trzeba zdefiniować szablon dla grupy podklas
  • Użyj interfejsu, gdy trzeba zdefiniować rolę dla innych klas, niezależnie od drzewa dziedziczenia tych klas

Musisz znać fakty o interfejsie

  • Klasa Java może implementować wiele interfejsów Java. Konieczne jest, aby klasa musiała implementować wszystkie metody zadeklarowane w interfejsach.
  • Klasa powinna przesłonić wszystkie abstrakcyjne metody zadeklarowane w interfejsie
  • Interfejs umożliwia wysłanie wiadomości do obiektu bez konieczności zastanawiania się, do jakich klas należy.
  • Klasa musi zapewniać funkcjonalność dla metod zadeklarowanych w interfejsie.
  • Wszystkie metody w interfejsie są niejawnie publiczne i abstrakcyjne
  • Nie można utworzyć wystąpienia interfejsu
  • Odwołanie do interfejsu może wskazywać na obiekty jego klas implementujących
  • Interfejs może obejmować jeden lub wiele interfejsów. Klasa może rozszerzać tylko jedną klasę, ale implementować dowolną liczbę interfejsów
  • Interfejs nie może implementować innego interfejsu. W razie potrzeby musi rozszerzyć inny interfejs.
  • Interfejs zadeklarowany w innym interfejsie nazywany jest interfejsem zagnieżdżonym
  • W momencie deklaracji zmienna interfejsu musi zostać zainicjowana. W przeciwnym razie kompilator zgłosi błąd.
  • Klasa nie może implementować dwóch interfejsów w języku Java, które mają metody o tej samej nazwie, ale innym typie zwracania.

Podsumowanie :

  • Klasa implementująca interfejs musi zapewniać funkcjonalność metod zadeklarowanych w interfejsie
  • Wszystkie metody w interfejsie są niejawnie publiczne i abstrakcyjne
  • Nie można utworzyć wystąpienia interfejsu
  • Odwołanie do interfejsu może wskazywać na obiekty jego klas implementujących
  • Interfejs może obejmować jeden lub wiele interfejsów. Klasa może rozszerzać tylko jedną klasę, ale implementować dowolną liczbę interfejsów