⊗ppOpIfInr 65 of 107 menu

Sąsajos OOP PHP

Kaip jau žinote, abstrakčios klasės yra savo palikuonių metodų rinkinys. Dalį šių metodų galima įgyvendinti pačioje klasėje, o dalis metodų gali būti paskelbti abstrakčiais ir reikalauti įgyvendinimo vaikų klasėse.

Įsivaizduokime situaciją, kai jūsų abstrakti klasė yra tik abstrakčių viešųjų metodų rinkinys, nepridedant metodų su įgyvendinimu.

Faktiškai jūsų pagrindinė klasė apibūdina sąsają palikuonių, tai yra rinkinį jų viešųjų metodų, privalomų įgyvendinti.

Kam mums to reikia: kad programuodami darytume mažiau klaidų - aprašę visus reikalingus metodus pagrindinėje klasėje, galime būti tikri, kad visi palikuoniai juos tikrai įgyvendins.

Kai tai padės: tarkime, sukursime savo pagrindinę klasę ir kelis jos palikuonis. Jei po kiek laiko, pavyzdžiui, po mėnesio, nuspręsime sukurti dar vieną palikuonį, tikriausiai jau pamiršime savo kodo detales ir galime pamiršti parašyti kokio nors metodo įgyvendinimą naujajame palikuonyje. Tačiau pats PHP neleis prarasti metodo - ir tiesiog išduos klaidą.

Tai pats tas pats ir kitam programuotojui, dirbančiam su jūsų projektu. Tarkime, pagrindinės klasės kodą rašėte jūs, o tada jūsų kolega nusprendė sukurti dar vieną palikuonį. Jūsų kolega taip pat negalės prarasti poros metodų.

Tačiau yra problema: faktiškai mes padarėme savo pagrindinę klasę tam, kad rašytume joje abstrakčius viešuosius metodus, bet mes patys ar mūsų kolega turime galimybę netyčia pridėti į šią klasę ne viešą metodą ar ne abstraktų.

Tarkime, norime fiziškai uždrausti daryti pagrindinėje klasėje kitus metodus, išskyrus abstrakčius viešuosius. PHP tam vietoj abstrakčių klasių galima naudoti sąsajas.

Sąsajos yra klasės, kurių visi metodai yra vieši ir neturi įgyvendinimo. Metodų kodą turi įgyvendinti sąsajų palikuonių klasės.

Sąsajos deklaruojamos taip pat, kaip ir įprastos klasės, bet naudojant raktinį žodį interface vietoj žodžio class.

Paveldėjimui iš sąsajų naudojama šiek tiek kitokia terminologija: sakoma, kad klasės nepaveldi iš sąsajų, o įgyvendina jas. Atitinkamai vietoj žodžio extends reikia naudoti raktinį žodį implements.

Negalima sukurti sąsajos objekto. Visi sąsajos metodai turi būti paskelbti kaip public ir neturi turėti įgyvendinimo. Sąsaja gali turėti tik metodus, ne savybes. Taip pat negalima padaryti sąsajos ir klasės su tuoj pačiu pavadinimu.

Lietuvių
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Mes naudojame slapukus svetainės veikimui, analizei ir personalizavimui. Duomenų apdorojimas vyksta pagal Privatumo politiką.
priimti visus nustatyti atšaukti