JavaRush /Blog Java /Random-PL /Interfejs w Javie
vinsler
Poziom 35

Interfejs w Javie

Opublikowano w grupie Random-PL
Jestem złym gawędziarzem, jeśli nie mam na celu wyjaśnienia czegoś niezrozumiałego komuś z konkretną prośbą, więc rozumiem proste rzeczy i po pierwsze napiszę o tym tutaj. Nie podążam za przykładem nauczania JavaRush, w którym najpierw zadaję pytanie, a następnie mówię, jak to zrobić. Jestem zwolennikiem najpierw opowiadania, a potem proszenia, tak jak to jest w przypadku opowiadania, najpierw pokazywania, a potem wyjaśniania.
Interfejs w Javie - 1
BS: Działania == zachowanie, traktuj je jako synonimy, działania są po prostu lepiej rozumiane, zawsze jest to coś aktywnego, a zachowanie może niczego nie pokazywać.

interfejs - interfejs

Co to jest? Przykładowa lista interfejsów (z rodzajami):
public interface Store<T, ID> {
    void add(T t);
    void update(T t, ID i);
    void delete(ID i);
    T findOne(ID i);
    List<T> findAll();
}
Wspólny interfejs crud (z CRUD: Utwórz, Czytaj, Aktualizuj, Usuń). Nie martw się, wszystko jest całkiem proste. Interfejs ten powoduje, że praca z wieloma bazami danych opiera się na następującej zasadzie: należy dodać rekord, zaktualizować rekord, usunąć i znaleźć wszystkie rekordy. Spotkasz się z tym jeszcze 100 razy i tyle samo razy napiszesz sam prawie ten sam interfejs. Jest oznaczony jako publiczny, ponieważ musi zostać zaimplementowany przez klasę. Co to znaczy być zaimplementowanym przez klasę ? Wszystko jest bardzo proste: musi opisywać wszystkie metody interfejsu. Najprostszy przykład implementacji w klasie:
void add (T t) {
	bookstore.add(t);
}
Zamiast T t zostanie zastąpiony pewien rodzajowy. W skrócie jest to TYP zmiennej i dlatego najczęściej określa się go jako T = Typ. W naszym przykładzie załóżmy, że mogłoby to wyglądać tak:
void add (Book book) {
	bookstore.add(book);
}
Oczywiście zamiast książki Book możesz zastąpić dowolną zmienną potrzebną do implementacji. Aby to zrozumieć, możesz teoretycznie wyobrazić sobie, że T = Obiekt, a ponieważ w Javie wszystko jest Obiektem, możesz tam również zdefiniować dowolną klasę/zmienną. Jedyny problem pojawi się później - wyjątki, jeśli klasa ma wartość zero itp. Inaczej mówiąc, jest to pewna struktura programu, która definiuje relacje między obiektami, dzieląc je na pewne części behawioralne. Celem interfejsu jest zdefiniowanie funkcjonalności do implementacji przez klasę. Oznacza to opis sygnatur metod. Wewnątrz interfejsu znajdują się nazwy metod zwracających i wprowadzających wartości i to wszystko. Cóż, nadal możesz tam wyznaczyć pewne zmienne, ale natychmiast stają się one domyślnie publicznymi statycznymi wersjami końcowymi i można uzyskać do nich dostęp z dowolnej części programu. Interfejs opisuje akcje, dlatego te same akcje są w nim zawarte, tj. funkcje lub metody. Dlaczego jest to konieczne? Co to upraszcza i jakie daje korzyści? Uproszczenie opisu działań i zachowań. Mówimy, co robić, ale każda klasa sama implementuje, jak to zrobić. Oszczędzaj czas przy dużych projektach. Interfejsy powstają w sytuacjach, gdy wiemy, że musimy wykonać jakieś zadanie, ale sposób jego wykonania może być różny. Interfejs opisuje nazwy akcji – to po prostu kierunek jakiejś abstrakcji. Chociaż mogą istnieć również interfejsy bez metod i pól, takie jak znaczniki, takie jak Cloneable, Remote itp. Weźmy ulubiony przez wszystkich przykład samochodu. Interfejs w nim będzie opisywał możliwe działania samochodu, kręcenie kierownicą lub kierunek ruchu, przyrost prędkości, pozostałą benzynę itp. Oznacza to te same działania, które może mieć absolutnie każdy samochód. Innymi słowy, schodzimy w dżunglę degradacji na najniższy poziom tworzenia pierwszego samochodu i własnymi mózgami domyślamy się, jak powstał i co miał. Oczywiście opisujemy to abstrakcyjnie i tylko w odniesieniu do działań. Co miał pierwszy samochód? Czy była kierownica? To był, co oznacza, że ​​gdzieś skręcał, w kierunku/ruchu kierownicy. Czy były koła? Tak, to znaczy, że jechałem z pewną prędkością, zmiana prędkości. To cały interfejs. Ale ogólnie interfejsy są tworzone w celu pewnej realizacji określonych działań. Te. piszemy program dla bardziej szczegółowych niż dla czegokolwiek innego, co możesz wymyślić. Dlatego same interfejsy będą zawierać jaśniejsze i bardziej szczegółowe metody. Oczywiście będą one możliwie najbardziej abstrakcyjne. Interfejsy mogą być dziedziczone od siebie jako klasy.
interface MyInterface extends NotMyinterface;
Interfejsy są implementowane w klasach. Możesz zaimplementować dowolną liczbę interfejsów. W przeciwieństwie do dziedziczenia, dziedzicz tylko z jednego.
class NewClass extends OldClass implements MyInterface, NotMyinterface;
Te. wymyśliliśmy pewne akcje, nadaliśmy im nazwy, dane wejściowe, dane zwrócone, zapisaliśmy to wszystko w interfejsie, następnie stworzyliśmy klasę i dodaliśmy do tej klasy nasz interfejs, tj. zaimplementowaliśmy nasz interfejs w tej klasie. Ponadto wszystkie metody/funkcje opisane w interfejsie muszą mieć implementację. Można to zrobić bezpośrednio w samym interfejsie, dodając przed metodą słowo default i zapisując implementację bezpośrednio w metodzie, np. w klasie. Stało się to możliwe dzięki wersji 8 Java. Można to również zrobić w klasie, która zaimplementuje ten interfejs. No cóż, napisaliśmy interfejs, zaimplementowaliśmy go w klasie, wdrożyliśmy implementację w klasie, możemy go uruchomić i przetestować. W interfejsach możesz także przeczytać o:
  • Metody statyczne.
  • Metody prywatne. (powtórzenie kodu)
  • Zmienne/stałe.
  • Zagnieżdżone interfejsy.
Ale lepiej zrobić to później, szkodliwe jest również napełnianie głowy zbyt dużą ilością. Ciekawe pytanie: czym jest Volvo? Klasa czy interfejs?
line1: Volvo v = new VolvoV2();
line2: Volvo v = new VolvoV3();
Oprócz interfejsów warto kontynuować temat klas abstrakcyjnych i klas. Może później, kiedy będę miał jeszcze kilka godzin wolnego. ))) PS: Kochani proszę o wszelką krytykę pod postem lub na PW, doskonale rozumiem, że każdy ją ma))) i zawsze chętnie ją wysłucham, bo to powód, żeby stać się trochę lepszym i ponownie idź do przodu. W związku z tym dziękuję wszystkim i życzę powodzenia w programowaniu. )))
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION