Interfețe în oop (java), într-un mod simplu

Definiție generală: Interfața este un set de metode și reguli pentru interacțiunea elementelor sistemului. Cu alte cuvinte, interfața definește modul în care elementele vor interacționa unul cu celălalt.







Când folosiți aceste "obiecte", sunteți sigur că veți putea să le folosiți în mod similar. Deoarece sunteți familiarizați cu interfața lor

În programare, ceva similar. De ce este partea grafică a programului denumită adesea interfața? Deoarece determină modul în care puteți utiliza funcționalitatea de bază încorporată în program.

"Interfața definește modul în care putem folosi obiectul" - transferăm acest gând la planul de programare.

Să presupunem că aveți următoarele tipuri în program:

dar acum să vedem cum puteți folosi ceea ce avem:

După cum puteți vedea, le folosim în mod identic, dar esența constă în implementarea metodelor:

Pe de o parte, faptul că SomeCar CarWithKpp moștenește interfața (și prin acesta din urmă, de asemenea, o mașină), să-l folosească pentru a lucra cu metodele testAction1, testAction2. Interfețele implementate (implementate) în clasa SomeCar - oferă acces la utilizarea corectă a acestora. Și utilizarea interfeței în semnătura metodei vă asigură că obțineți exact tipul de care aveți nevoie.

Partea inversă a monedei este că interfața impune restricții asupra utilizării clasei. Un exemplu este că în metoda testAction2 nu mai puteți accesa metoda getKpp. În acest fel, puteți ascunde metodele și proprietățile declarate în interfața CarWithKpp, precum și metodele declarate în clasa SomeCar (dacă nu se află în interfață). Ambele metode pot utiliza doar setul de "instrumente" care le sunt disponibile (acest lucru este determinat de interfață).

Prin vorbe simple? Bine, bine, adevărul este că tot felul de tovarăși vor începe să scuipe ca un guru :)

Interfața este capacitatea de a privi la o clasă ca un obiect de tip ușor diferit.

Voi explica: Ei bine, cum ar spune numele pentru el? Obiectul în OOP este o entitate care are propriul set de tehnici și de a lucra cu ei - metodele de apel în mod convențional „poarta“, iar interfața este o „ușă“ în aceste „porți“ - un mod putin diferit de a face cu același obiect. Deci, dacă uitați de "poarta", atunci se pare că este un alt obiect. Cuvântul cheie aici pare.

Exemplu: există o masă obiect, care are metode de a lucra cu ea: cum este să mănânci ședința în spatele ei, acoperiți-l cu un havchik, pus, colecta, a văzut picioarele și așa mai departe. Dar același obiect de masă poate fi considerată ca interfață de mobilier (în limba OEP se numește clasa de masă de tip implementează mobilier tip de interfață :. Clasa de masă pune în aplicare mobilier Este clar că nu toată mobila puteți mânca, sau taie un picior, dar cu siguranță este faptul că mobilierul poate fi livrat și asamblat.

Acum, de ce toate acestea sunt necesare. Din nou, exemplul mobilei - dacă noi spunem că este un obiect un scaun care se vinde, de asemenea, interfata mobila, si cu un scaun și o masă cu pot fi tratate în același mod - acesta este sensul interfeței - de a unifica lucrul cu obiecte eterogene.

P.S. Apropo, întrebarea preferată a intervievatorilor la interviu: ce are un nivel mai ridicat de abstractizare - clasă, clasă abstractă sau interfață? Răspunsul corect este interfața







Înțelegerea interfețelor va veni cu timpul. Cât de mulți nu citesc, cât de mulți nu explică, tu trebuie să înțelegi acea flexibilitate, amploarea acțiunilor pe care le furnizează programatorului. Încercați să le utilizați. Biblioteca de clase Java oferă interfețe pentru implementare. Încercați să le învățați, poate vă va ajuta să înțelegeți toată puterea oferită de programare prin utilizarea interfețelor.

Interfața ** a unui obiect va fi numită un set de operații (metode) pe care le poate efectua sau care pot fi executate pe acesta. De exemplu, interfața numărului 3 este numită, de fapt, "numărul" și include un set de operații de adăugare, scădere, multiplicare și divizare. Această interfață poate fi implementată prin orice număr de tipuri / clase, de exemplu, întreg, număr, număr real, număr complex și, de asemenea, astfel de tipuri nevăzute ca Interval sau Polinomial. În același timp, același tip poate implementa mai multe interfețe. Deci, IntegerNumber, cu excepția interfeței Numarul poate implementa interfața Enumerable - pentru aceasta din clasa IntegerNumber va trebui doar să definiți în continuare operațiile "next" și "previous".

Ar putea părea ciudat pentru dvs., dar acesta este exact ceea ce distinge o persoană de un animal - utilizarea interfețelor în locul claselor. Probabil vă amintiți experiența clasică cu maimuța, care a fost învățată să stingă focul cu apă dintr-o găleată; și apoi am pus-o găleată pe o plută în mijlocul piscinei, dar maimuța încă fugit pe podul de pe pluta, și au scos apă din găleată, în loc să tragă apa direct din piscină. Adică, maimuța a folosit clasa Water-in-Bucket în locul interfeței Apă (și chiar mai mult, o să spun în secret: în loc de interfața Interfață pentru Quenching).

Când ne gândim în clase, devenim animale. Oamenii gândesc (și programează) interfețe.

Într-un mod simplu. Problema moștenirii multiple în multe limbi de programare este rezolvată pur și simplu - fie pentru a permite, fie pentru a interzice. Javiștii au decis să se așeze pe ambele scaune și și-au ales propriul mod special. Java, în principiu, nu știe cum să clase multiple de moștenire. Dacă scriem cuvântul cheie se extinde. atunci știm că vom moșteni o singură clasă, fie ea abstractă sau obișnuită. Dar, pentru a simplifica designul și pentru a asigura compatibilitatea, chiflele de la moștenirea multiplă doresc să aibă, iar aici pe scena apar interfețe. Interfața este o listă de metode (doar public (chiar și un cuvânt nu este necesar să scrie, în interfața altora nu poate), și numai fără implementare) și variabilele necesare, bine, asta pentru orice există în clasa descendentă. Și aici interfețele doar printr-un cuvânt cheie implementează este posibil să împingă cât mai mult. Și pot moșteni unul de celălalt. Astfel, interfața este o garanție că clasele care o implementează conțin metodele și variabilele enumerate acolo. Prin urmare, expresia ourObject instanseof noastreInterface returnează adevărat, știm cu certitudine că ourObject are metode listate în interfața noastră

Interfețele reprezintă baza pentru interacțiunea tuturor sistemelor informatice moderne. În cazul în care interfața unui obiect (un calculator personal, programe, funcții) nu se schimba (stabil, standardizat), acest lucru face posibilă modificarea obiectului în sine, nu rearanjarea principiile interacțiunii sale cu alte obiecte (de exemplu, învățarea de a lucra cu un program pentru Windows, utilizatorul poate stăpâni cu ușurință celelalte - deoarece acestea au aceleași elemente de interfață).

Un exemplu cu programele Windows este foarte clar)) Eu însumi am venit aici să înțeleg ce este interfața

Interfața din java definește interfața clasei. Neclar se datorează imperfecțiunii rușilor tehnici în programare. Pentru o înțelegere mai generală, trebuie să înțelegeți semnificația interfeței cuvântului.

Interfețele sunt proiectate să susțină rezoluția dinamică a apelurilor metodice la timpul de execuție. În mod obișnuit, pentru executarea normală a unui apel de la o clasă la alta, ambele clase trebuie să fie prezente la timpul de compilare, astfel încât compilatorul Java să poată verifica compatibilitatea semnăturilor metodelor. În sine, această cerință creează un mediu de distribuție clasă static și non-extindere. Într-un astfel de sistem, funcționalitatea este în mod inevitabil trecut peste ierarhia de clasă, ca urmare a cărei mecanisme vor deveni disponibile pentru tot mai multe subclase. Interfețele sunt concepute pentru a preveni această problemă. Ei izolează definiția unei metode sau a unui set de metode din ierarhia succesiunii. Și întrucât ierarhia interfețelor nu coincide cu ierarhia claselor, clase care nu sunt conectate în mod ierarhic. poate implementa aceeași interfață. Aici se manifestă cel mai bine capacitățile interfețelor.







Articole similare

Trimiteți-le prietenilor: