⊗ppOpIfInr 65 of 107 menu

Vmesniki v OOP v PHP

Kot že veste, abstraktni razredi predstavljajo nabor metod za svoje potomce. Del teh metod je lahko implementiran v samem razredu, del metod pa je lahko deklariran kot abstrakten in zahteva implementacijo v podrejenih razredih.

Predstavljajmo si situacijo, ko vaš abstraktni razred predstavlja le nabor abstraktnih javnih metod, ne da bi dodal metode z implementacijo.

Dejansko vaš nadrejeni razred opisuje vmesnik potomcev, to je nabor njihovih javnih metod, obveznih za implementacijo.

Zakaj je to koristno: da pri programiranju naredimo manj napak - z opisom vseh potrebnih metod v nadrejenem razredu, smo lahko prepričani, da jih bodo vsi potomci resnično implementirali.

Kdaj bo to pomagalo: recimo, da ustvarimo naš nadrejeni razred in več potomcev k njemu. Če se bomo kasneje, na primer, čez mesec dni, odločili ustvariti še enega potomca, bomo zagotovo že pozabili podrobnosti naše kode in lahko pozabimo napisati implementacijo kakšne metode v novem potomcu. Vendar sam PHP ne bo dovolil izgube metode - in bo preprosto izdal napako.

Enako velja za drugega programerja, ki dela na vašem projektu. Naj bo kodo nadrejenega razreda napisali vi, nato pa se vaš kolega odloči ustvariti še enega potomca. Tudi vaš kolega ne bo lahko izgubil nekaj metod.

Vendar obstaja težava: dejansko smo naredili naš nadrejeni razred zato, da bi pisali v njem abstraktne javne metode, vendar mi sami ali naš kolega imamo možnost po naključju dodati v ta razred ne javno metodo ali ne abstraktno.

Recimo, da želimo fizično prepovedati delati v nadrejenem razredu druge metode, razen abstraktnih javnih. V PHP lahko za to namesto abstraktnih razredov uporabimo vmesnike.

Vmesniki so razredi, pri katerih so vse metode javne in nimajo implementacije. Kodo metod morajo implementirati razredi-potomci vmesnikov.

Vmesniki se deklarirajo podobno kot običajni razredi, vendar z uporabo ključne besede interface namesto besede class.

Za dedovanje od vmesnikov se uporablja nekoliko drugačna terminologija: rečemo, da razredi ne dedujejo od vmesnikov, ampak jih implementirajo. V skladu s tem namesto besede extends uporabimo ključno besedo implements.

Ni mogoče ustvariti objekta vmesnika. Vse metode vmesnika morajo biti deklarirane kot public in ne smejo imeti implementacije. Vmesnik ima lahko samo metode, ne lastnosti. Prav tako ni mogoče narediti vmesnika in razreda z enakim imenom.

Slovenščina
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Za delovanje spletnega mesta, analitiko in personalizacijo uporabljamo piškotke. Obdelava podatkov poteka v skladu s Politiko zasebnosti.
sprejmi vse nastavi zavrni