⊗ppOpIfInr 65 of 107 menu

Rozhraní v OOP v PHP

Jak již víte, abstraktní třídy představují soubor metod pro své potomky. Část těchto metod může být implementována v samotné třídě, a část metod může být deklarována jako abstraktní a vyžadovat implementaci v potomních třídách.

Představme si situaci, kdy vaše abstraktní třída představuje pouze soubor abstraktních veřejných metod, nepřidávající metody s implementací.

Fakticky vaše rodičovská třída popisuje rozhraní potomků, tedy soubor jejich veřejných metod, povinných pro implementaci.

K čemu nám to je dobré: abychom při programování dělali méně chyb - popsáním všech potřebných metod v rodičovské třídě můžeme být jisti tím, že je všichni potomci skutečně implementují.

Kdy to pomůže: řekněme, že vytvoříme naši rodičovskou třídu a několik potomků k ní. Pokud potom po nějaké době, například, za měsíc, se rozhodneme vytvořit dalšího potomka, určitě už zapomeneme detaily našeho kódu a klidně můžeme zapomenout napsat implementaci nějaké metody v novém potomkovi. Avšak samotný PHP nedovolí metodu ztratit - a jednoduše vypíše chybu.

To samé platí pro jiného programátora, pracujícího s vaším projektem. Řekněme, že kód rodičovské třídy jste psali vy, a poté se váš kolega rozhodl vytvořit ještě jednoho potomka. Ani vašemu kolegovi se nepodaří ztratit pár metod.

Existuje však problém: fakticky jsme udělali naši rodičovskou třídu proto, abychom psali v ní abstraktní veřejné metody, ale my sami nebo náš kolega máme možnost náhodně přidat do této třídy ne veřejnou metodu nebo ne abstraktní.

Řekněme, že chceme fyzicky zakázat dělat v rodiči jiné metody, kromě abstraktních veřejných. V PHP k tomu místo abstraktních tříd lze použít rozhraní.

Rozhraní představují třídy, u kterých všechny metody jsou veřejné a nemající implementaci. Kód metod musí implementovat třídy-potomci rozhraní.

Rozhraní se deklarují stejně jako obyčejné třídy, ale pomocí klíčového slova interface namísto slova class.

Pro dědění od rozhraní se používá trochu jiná terminologie: říká se, že třídy nedědí od rozhraní, ale implementují je. Odpovídajícím způsobem místo slova extends se používá klíčové slovo implements.

Nelze vytvořit objekt rozhraní. Všechny metody rozhraní musí být deklarovány jako public a nesmí mít implementaci. Rozhraní může mít pouze metody, ne vlastnosti. Nelze také vytvořit rozhraní a třídu se stejným názvem.

Čeština
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Používáme soubory cookie pro fungování webu, analýzu a personalizaci. Zpracování údajů probíhá v souladu s Zásadami ochrany osobních údajů.
přijmout vše přizpůsobit odmítnout