Rozhraní
(Založena nová stránka: Objektově orientované jazyky poskytují pro realizaci tříd, kromě dědičnosti, dalši prostředek - rozhrani. Rozhrani definuje soubor metod, bez jejich implementace ...) |
|||
| Řádka 3: | Řádka 3: | ||
Deklarace rozhrani je podobna deklaraci třidy | Deklarace rozhrani je podobna deklaraci třidy | ||
| − | interface jmeno { | + | interface jmeno { |
| − | // hlavicky metod, všechny samozřejmě virtuální a abstraktní | + | // hlavicky metod, všechny samozřejmě virtuální a abstraktní |
| − | } | + | } |
V Javě se implementace rozhraní zapiše pomoci kličoveho slova implements, | V Javě se implementace rozhraní zapiše pomoci kličoveho slova implements, | ||
| Řádka 11: | Řádka 11: | ||
Může se stát, že 2 rozhraní mají stejné metody k implementaci. Implementovat je tedy možné | Může se stát, že 2 rozhraní mají stejné metody k implementaci. Implementovat je tedy možné | ||
| − | Implicitně - Implementujeme metodu první nalezené metody s tímto jménem ve všech rozhraních, nebo selže, záleží na jazyku | + | * '''Implicitně''' - Implementujeme metodu první nalezené metody s tímto jménem ve všech rozhraních, nebo selže, záleží na jazyku |
| − | Explicitně - Implementujeme metodu tak, že řekneme kterou metodu kterého rozhraní implementujeme (např public this.type Cloneable.Clone() { // tělo };) | + | * '''Explicitně''' - Implementujeme metodu tak, že řekneme kterou metodu kterého rozhraní implementujeme (např public this.type Cloneable.Clone() { // tělo };) |
Nejsilnější zbraní rozhraní je, že odděluje kód od definic (vhodné např. pro pluginové systémy) a je sdružuje třídy do jedné skupiny funkčnosti. | Nejsilnější zbraní rozhraní je, že odděluje kód od definic (vhodné např. pro pluginové systémy) a je sdružuje třídy do jedné skupiny funkčnosti. | ||
Verze z 11. 8. 2011, 12:10
Objektově orientované jazyky poskytují pro realizaci tříd, kromě dědičnosti, dalši prostředek - rozhrani. Rozhrani definuje soubor metod, bez jejich implementace (Podobně jako kompletně virtuální třída, analogie je v rozepsané kuchařce, kdy víme co to bude za jídlo a z čeho budeme vařit, ale postup neznáme) Třida, která implementuje toto rozhrani (tj. implementuje - definuje - všechny jeho metody) je po té v polymorfovatelná do ukazatele definovaného tímto rozhraním, což znamená, ze klient ví, že tato třída má implementované všechny metody, které potřebuje (a které jsou definované v rozhraní)
Deklarace rozhrani je podobna deklaraci třidy
interface jmeno {
// hlavicky metod, všechny samozřejmě virtuální a abstraktní
}
V Javě se implementace rozhraní zapiše pomoci kličoveho slova implements, V jiných jazycích (C++, C#, ...) používáme dvojtečku, přičemž první třída za dvojtečkou je obvykle dědění, ostatní jsou implementace rozhraní (i když v C++ je to jedno, tam můžeme implementovat i dědit od více tříd). Implementovat můžeme i několik rozhraní (například implements Cloneable, Runnable)
Může se stát, že 2 rozhraní mají stejné metody k implementaci. Implementovat je tedy možné
- Implicitně - Implementujeme metodu první nalezené metody s tímto jménem ve všech rozhraních, nebo selže, záleží na jazyku
- Explicitně - Implementujeme metodu tak, že řekneme kterou metodu kterého rozhraní implementujeme (např public this.type Cloneable.Clone() { // tělo };)
Nejsilnější zbraní rozhraní je, že odděluje kód od definic (vhodné např. pro pluginové systémy) a je sdružuje třídy do jedné skupiny funkčnosti.