Nevím, jestli to vysvětlím srozumitelně, ale pokusím se aspoň kapku :)
Hlavní výhoda (a pravděpodobně hlavní smysl) rozhraní je to, že umožňuje jednotný přístup k různým objektům. To se hodí, mají-li například (a je to opravdu jen jeden příklad z mnoha) nějakou stejnou vlastnost, která se ale pro každý objekt zjistí jinak.
Příklad. Kruh, trojúhelník a čtverec jsou jednotlivé objekty. U všech lze spočítat obsah (=stejná vlastnost) Ale tyhle obsahy se počítají každý jinak. Ano, teď si klidně můžeš napsat metody spoctiObsah pro každý objekt zvlášť a pak napsat metodu, která bude všechny tyhle třídy (objekty kruh, čtverec....a jakekoliv další geometrické tvary) využívat kdoví k čemu tak, že bude vytvářet jejich instance a používat metodu spoctiObsah každého objektu zvlášť, normálně přes tečkovou notaci (...Kruh kruh = new Kruh(); ...kruh.spoctiObsah(); ....atd.) tahle metoda by se mohla jmenovat třeba tiskniObsahy() a bude v hlavní třídě, tam, kde je main(). Když to uděláš takhle (hloupě), tak už vždycky budeš muset v téhle metodě rozlišovat, jestli zrovna pracuješ s kruhem nebo čtvercem nebo ...atp. a psát kod pro všechno zvlášť. A pozor, teď to přijde. Když použiješ rozhraní, ano, ty metody spoctiObsah() musíš stejně napsat pro všechny objekty zvlášť, ale v té metodě tiskniObsahy() máš zajištěný jednotný přístup... tzn. ať se jedná o jakejkoliv geom. tvar, tadle metoda spočte jeho obsah v jediném příkazu. Např. takovémto: tvar[i].spoctiObsah() ...kde tvar[i] - tvar je instancí našeho rozhraní, na indexu i v poli tvar je uložena nová instance libovolného objektu (např new Kruh()).
Nebo takto můžeš v nějaké jiné metodě spočíst obsah útvaru, který se skládá z různých geometrických tvarů...a další výhoda - jakmile budeš chtít nějaký tvar doplnit - tedy aby naše metoda tiskniObsahy uměla spočíst a vytisknout i obsah třeba obdelníka...tak jedna z mála věcí, co musíš udělat, je naimplementovat třídu Obdelnik s metodou - ano - spoctiObsah(). Ale v metodě tiskniObsahy se nic nemění, nic nepřidává, žádná nová instance třídy Obdelník a přesto metoda funguje. Uf...snad sem ti ještě víc nezamotala hlavu, mě už se motá, tak toho radši nechám.
Příspěvky odeslané z IP adresy 89.24.236.–
Anonymní uživatel