Clasă și metodă abstractă: descriere, caracteristici și caracteristici. Care este diferența dintre clasa abstractă și interfața

Oricine are cel puțin o cunoaștere minimă a programării, se întreba de ce există clase de bază abstracte. Care este scopul lor? Cum de a crea o clasă abstractă? Ce avantaje le oferă în practică? De ce sunt necesare în programare și ce caracteristici ale implementării lor trebuie luate în considerare?

Clase abstracte

clasă abstractăDeci, în programare se numește o unitate de cod de program, pe baza căruia obiectele nu pot fi create. Trebuie remarcat faptul că moștenitorii acestei clase nu pot fi abstracți. Prin urmare, crearea de obiecte pe baza lor este foarte posibilă. Dacă luăm în considerare un exemplu din Java, atunci construim un astfel de model: putem descrie constructorii din clasa A. Dar nu le putem folosi. Modul de ieșire din această situație este de a declara o variabilă ca referință. Și este necesar să se precizeze în mod clar că acesta indică un obiect de clasă A. Dar cum se poate face acest lucru? Distribuția ne va ajuta în acest sens. Trebuie remarcat faptul că clasa părintească este întotdeauna considerată mai universală decât copilul. În multe limbi de programare, turnarea este utilizată automat. Dar dacă nu există încredere în disponibilitatea unui astfel de mecanism, atunci trebuie să specificați în mod explicit o referință la obiect.

Metode rezumate

Ce sunt? Rezumat sunt acele metode care nu au nicio implementare în clasa în cauză. Deci, după ce parantezele (în care sunt enumerate argumentele folosite în ele) se pun neclinșionate (după care este plasat blocul de descriere a metodei), dar numai punct și virgulă. Astfel, în acest caz, nu există informații despre ceea ce face el. Aici puteți pune întrebarea: "De ce este metoda fără implementare?" La urma urmei, nu poate fi folosit! Desigur, acest lucru nu este posibil în clasa în care a fost descris. Dar dacă luăm în considerare această situație din punctul de vedere al descendenților, atunci se poate numi. Și va funcționa în funcție de descrierea specifică disponibilă în această clasă.

Caracteristici ale metodelor abstracte

creați o clasă abstractăExistă limitări în utilizarea lor. Să o considerăm un exemplu Limbaj de programare Java. Aici există o astfel de cerință: dacă există cel puțin o astfel de metodă în clasă, atunci trebuie să fie neapărat abstractă. Și în ce cazuri este oportun să se utilizeze astfel de construcții? Să ne uităm la acest lucru în cazul clasei pentru animale de companie. În primul rând, trebuie înțeles că nu există niciun sunet pe care toți îl publică. Prin urmare, în clasa cea mai generală, nu este specificată implementarea metodei sonore. Dar pentru el este creat un corp, care este separat de blocuri. Și deja în viitor, când va fi creată o clasă de câini, pisici sau hamsteri, va fi prescrisă o metodă separată pentru el, în cadrul căruia vor fi dezvăluite toate trăsăturile.

interfață

care este diferența dintre o clasă abstractăÎn programare, au fost create multe instrumente al căror scop este de a ajuta o persoană să facă un produs de bună calitate. Și în cadrul subiectului examinat este necesar să se acorde atenție acestui aspect, astfel încât toată lumea să cunoască diferența dintre clasa abstractă și interfața. Deci, particularitatea celui din urmă este că nu poate avea proprietăți, iar metodele nu definesc corpurile. Investigând ceea ce clasa abstractă diferă de interfață, ar trebui să ne ocupăm de o altă caracteristică. Deci, primul este moștenit, în timp ce cel de-al doilea este realizat. Pentru o persoană neexperimentată, acest lucru poate părea nesemnificativ. Dar faptul este că numai o singură clasă poate fi moștenită și orice număr poate fi implementat. Acesta este modul în care interfața diferă de la clasă abstractă. Java are acele caracteristici pe care le poate descrie doar metode publice abstracte și constante statice. Dar interfețele pot fi, de asemenea, moștenite. În acest caz, este necesar să se indice că operatorii utilizați sunt publici cu ajutorul publicului.

Moștenire interfață multiplă



decât clasa abstractă diferă de interfațăAceastă funcție nu este accesibilă pentru clasele din multe limbi de programare (de exemplu, în Java, pe care îl gândim). Acest lucru se datorează unui număr de probleme. Ca atare, indicați ambiguitatea care apare atunci când moșteniți. Acesta a fost motivul introducerii mai multor interfețe de moștenire. Acest lucru rezolvă parțial problemele existente, dar nu toate. Prin urmare, datorită principiilor de încapsulare și polimorfism, interfețele pot fi implementate cu succes în diferite clase prin metode diferite (deși vor avea același nume). Dar nu uitați de problemele existente. Deci, atunci când lucrați cu interfețe multiple, va trebui întotdeauna să specificați cine ne referim. De asemenea, vor apărea probleme atunci când încercați să lucrați cu două metode cu același nume, caz în care acestea nu pot fi utilizate. Prin urmare, pentru astfel de cazuri este necesar să se aibă grijă de disponibilitatea unei realizări comune.

Datele rezumate

clasă abstractă și interfațăAcest concept este esențial în programare. În acest caz, abstractizarea este înțeleasă ca o considerație independentă și separarea interfeței și implementarea ei. Să ne uităm la un exemplu. Avem un televizor, care este un obiect sau un modul. Are o interfață. Ca atare, există controale pentru aceasta, precum și redarea sunetului și imaginii. Cu cât interfața este mai avansată, cu atât este mai convenabil ca televizorul să fie în proces de utilizare. Putem schimba programele făcând clic pe orice buton. În acest caz, nu este nevoie să vă gândiți la procesele fizice din televizor. Acestea sunt îngrijite de specialiștii care colectează dispozitivul. Suntem interesați numai de proprietăți ca utilizatori. Revenind la programare, putem spune că prin această analogie sunt interfața și implementarea. De asemenea, dacă o persoană are încredere în cunoștințele lor, atunci poate "îndepărta" coperta de la televizorul nostru ipotetic și o poate îmbunătăți. Deși acest lucru poate duce la succese locale, în cele mai multe cazuri rezultatul final este negativ. Prin urmare, în programare, accesul este refuzat, iar componentele interne sunt ascunse pentru datele abstracte. Principiul acestui mecanism prevede modalități de a împiedica modificarea intenționată sau accidentală a componentelor interne. Și când vorbesc despre tipuri de date abstracte, înseamnă colectarea lor cu un set de operațiuni care pot fi efectuate pe ele.

obiecte

Am examinat deja clasa abstractă și interfața în general și în general. Acum, să prezentăm un mic detaliu cunoștințele noastre. În primul rând, vom acorda atenție obiectelor. Prin ele în cazul general se înțelege o parte a realității înconjurătoare care există în spațiu și timp. Dar este destul de dificil să definim în mod formal obiecte în cadrul programării (din punct de vedere filosofic și teoretic). Prin urmare, acest lucru se datorează proprietăților sale. Ca un exemplu, se poate cita următoarele: un obiect poate fi identificat în mod unic (are un nume unic), este într-o anumită stare și utilizează un anumit model de comportament.

moștenire

clasele de bază abstracteDeoarece programarea se bazează pe construirea unui arbore ierarhic al relațiilor dintre obiecte, se pune problema că proprietățile bibliotecilor de coduri părinte vor fi transferate la tipurile de bază. Moștenirea este înțeleasă ca o relație atunci când se repetă comportamentul și structura altceva. În viața obișnuită, acest lucru se poate găsi peste tot. Acest lucru a fost, de asemenea, transferat la programare cu privire la elementele abstracte. Ca o comparație, putem menționa faptul că nu există un astfel de organism ca o pasăre. Acesta este un nume abstract. Ca specimen specific, aduceți un pescăruș, o lăcustă sau o vrabie. Datorită moștenirii, putem folosi bibliotecile de clasă și, de asemenea, le putem dezvolta pentru un program specific. Un astfel de instrument ne permite să creăm obiecte noi, adăugând sau schimbând simultan proprietățile celor deja create. Moștenitorul primește toate metodele și câmpurile strămoșilor săi și, dacă este necesar, își dobândește propriile atribute. Datorită faptului că există elemente abstracte și principiul patrimoniului, există ample posibilități de modificare în cadrul programării orientate obiect. În plus, vă permite să abordați în mod flexibil soluția sarcinilor. Când moșteniți, datele și funcțiile sunt transmise noii clase.

polimorfism

diferența dintre clasa abstractă și interfațaEste necesar pentru a aplica aceleași funcții pentru a rezolva diferite tipuri de sarcini. În acest caz, se preconizează că există posibilitatea efectuării unor acțiuni diverse, ale căror conținut va depinde de tipul de obiect cu care se desfășoară activitatea. Polimorfismul este înțeles ca proprietate a elementelor care au un părinte comun, efectuează probleme similare în sens semantic în diferite moduri. Atragem o analogie cu animalele. Există o astfel de acțiune - de a alerga. Cu toții înțelegem cum se întâmplă. Dar cu animale diferite (leu, elefant, cimpanzeu, crocodil, broasca testoasa) aceasta actiune se va face diferit. În acest caz, dezvoltatorul este responsabil pentru mișcarea lor, care, dacă este necesar, poate cauza un anumit subprogram pentru un anumit caz, dezvoltarea unui algoritm și implementarea cu succes a acestuia. Acest lucru se face folosind un set de metode. În acest caz, în fiecare clasă separată, programatorul indică ce obiect are proprietățile inerente. Schimbând ceva în descendenți, puteți realiza anumite acțiuni necesare în acest caz. O astfel de influență se numește polimorfism obiect. În general, clasa abstractă este un instrument de programare extrem de util.

Distribuiți pe rețelele sociale:

înrudit
Primul program Java este Hello WorldPrimul program Java este Hello World
Limbaj de programare JavaLimbaj de programare Java
Elementele periculoase (potențial) pot fi apropiateElementele periculoase (potențial) pot fi apropiate
Cum să câștigi bani în clasele "colegii de clasă" pe "clase"? Îmbunătățește-te…Cum să câștigi bani în clasele "colegii de clasă" pe "clase"? Îmbunătățește-te…
Cum să câștigați pe clase în "Colegii de clasă"? Aflați toate nuanțele!Cum să câștigați pe clase în "Colegii de clasă"? Aflați toate nuanțele!
Cum de a crea un joc în colegii cu mâinile tale?Cum de a crea un joc în colegii cu mâinile tale?
Encapsularea este ceea ce? Încapsulare în programareEncapsularea este ceea ce? Încapsulare în programare
Întrebarea despre timp: cum se face formatul datei și unde se caută esența datăÎntrebarea despre timp: cum se face formatul datei și unde se caută esența dată
Java: InputStream. Fluxuri de intrareJava: InputStream. Fluxuri de intrare
Java generice: descriere și metodeJava generice: descriere și metode
» » Clasă și metodă abstractă: descriere, caracteristici și caracteristici. Care este diferența dintre clasa abstractă și interfața