Abstrakce v Java
V čem je abstrakce Java?
Abstrakce je koncept objektově orientovaného programování, které „ukazuje“ pouze podstatné atributy a „skrývá“ nepotřebné informace. Hlavním účelem abstrakce je skrytí nepotřebných detailů před uživateli. Abstrakce je výběr dat z většího fondu, aby se uživateli zobrazily pouze relevantní detaily objektu. Pomáhá snižovat složitost programování a úsilí. Je to jeden z nejdůležitějších konceptů OOP.
klikněte zde pokud video není přístupné
Pojďme studovat abstrakci v OOP s příkladem:
Předpokládejme, že chcete vytvořit bankovní aplikaci a budete požádáni o shromáždění všech informací o vašem zákazníkovi. Existuje šance, že přijdete s následujícími informacemi o zákazníkovi
K vytvoření bankovní aplikace však nejsou nutné všechny výše uvedené informace. Musíte tedy vybrat pouze užitečné informace pro vás bankovní aplikace z toho bazénu. Data jako jméno, adresa, daňové informace atd. mají smysl pro bankovní aplikaci, která je příkladem abstrakce v OOP
Vzhledem k tomu, že jsme získali/odstranili/vybrali informace o zákaznících z většího fondu, je tento proces označován jako abstrakce v OOP. Avšak tytéž informace, jakmile jsou extrahovány, mohou být použity pro širokou škálu aplikací. Můžete například použít stejná data pro nemocniční aplikaci, aplikaci pracovního portálu, vládní databázi atd. s malými nebo žádnými úpravami. Stane se tedy vašimi kmenovými daty. To je výhoda abstrakce v OOP.
Rozdíl mezi abstrakcí a zapouzdřením
Abstrakce | Zapouzdření |
---|---|
Abstrakce v objektově orientovaném programování řeší problémy na úrovni návrhu. | Zapouzdření to řeší na úrovni implementace. |
Abstrakce v programování je o skrytí nechtěných detailů a zároveň zobrazení nejdůležitějších informací. | Zapouzdření znamená spojení kódu a dat do jediné jednotky. |
Abstrakce dat v Java umožňuje zaměřit se na to, co musí informační objekt obsahovat | Zapouzdření znamená skrytí vnitřních detailů nebo mechaniky toho, jak objekt něco dělá, z bezpečnostních důvodů. |
Rozdíl mezi abstraktní třídou a rozhraním
Abstraktní třída | Rozhraní |
---|---|
Abstraktní třída může mít jak abstraktní, tak neabstraktní metody. | Rozhraní může mít pouze abstraktní metody. |
Nepodporuje vícenásobnou dědičnost. | Podporuje vícenásobnou dědičnost. |
Může zajistit implementaci rozhraní. | Nemůže poskytnout implementaci abstraktní třídy. |
Abstraktní třída může mít chráněné a abstraktní veřejné metody. | Rozhraní může mít pouze veřejné abstraktní metody. |
Abstraktní třída může mít konečnou, statickou nebo statickou konečnou proměnnou s libovolným specifikátorem přístupu. | Rozhraní může mít pouze veřejnou statickou konečnou proměnnou. |
Co je abstraktní třída?
ABSTRAKTNÍ TŘÍDA je typem třídy v Java, které deklarují jednu nebo více abstraktních metod. Tyto třídy mohou mít abstraktní metody i konkrétní metody. Normální třída nemůže mít abstraktní metody. Abstraktní třída je třída, která obsahuje alespoň jednu abstraktní metodu. Pojem můžeme pochopit podle příklad tvaru v Javě.
Zvažte následující hierarchii tříd sestávající z třídy Shape, která je zděděna třemi třídami Rectangle, Circle a Triangle. Třída Shape je vytvořena, aby šetřila společné atributy a metody sdílené třemi třídami Rectangle, Circle a Triangle. Jednou z takových metod sdílených všemi třemi podřízenými třídami a přítomnými ve třídě Shape je metoda countArea().
Nyní předpokládejme, že píšete kód pro vytvoření objektů pro třídy zobrazené výše. Podívejme se, jak tyto předměty budou vypadat v praktickém světě. Objekt třídy obdélník dá obdélník, tvar, který tak běžně pozorujeme v každodenním životě.
Objekt třídního trojúhelníku dá trojúhelník, opět běžný každodenní tvar.
Ale jak by vypadal předmět Class Shape v praktickém světě?
Pokud pozorujete, že třída Shape slouží v náš cíl dosáhnout dědictví a polymorfismus. Nebylo to ale stavěno pro vytváření instancí. Takové třídy mohou být označeny Abstraktní. Abstraktní třídu Java nelze vytvořit.
Syntaxe:
abstract class Shape{ // code }
Je možné, že třídu Shape NEOZNAČUJETE jako abstraktní a poté ji vytvoříte. Ale takový objekt nebude mít ve vašem kódu žádné využití a otevře prostor pro potenciální chyby. Proto to není žádoucí.
V čem jsou abstraktní metody Java?
ABSTRAKTNÍ METODA in Java, je metoda, která má pouze definici metody, ale neobsahuje implementaci. Metoda bez těla je známá jako abstraktní metoda. Musí být deklarován v abstraktní třídě. Abstraktní metoda nebude nikdy konečná, protože abstraktní třída musí implementovat všechny abstraktní metody.
Jak všichni víme, vzorec pro výpočet plochy pro obdélník, kruh a trojúhelník je jiný. Metoda countArea() bude muset být přepsána dědícími třídami. Nemá smysl ji definovat ve třídě Shape, ale musíme se ujistit, že všechny dědící třídy mají metodu.
Takové metody mohou být označeny abstraktní.
Syntaxe:
abstract public void calculateArea();
Pro abstraktní metoda, není nutná žádná implementace. Definuje se pouze podpis metody.
Příklad kódu abstrakce
abstract class Shape{ abstract void calculateArea(); } class guru99 extends Shape{ void calculateArea(){System.out.println("Area of Shape");} public static void main(String args[]){ Shape obj = new guru99(); obj.calculateArea(); } }
Výhody abstrakce
- Hlavní výhodou použití abstrakce v Programování spočívá v tom, že vám umožňuje seskupit několik příbuzných tříd jako sourozence.
- Abstrakce v objektově orientovaném programování pomáhá snížit složitost procesu návrhu a implementace softwaru.
Konečné klíčové slovo v Java
Poslední modifikátor se vztahuje na třídy, metody a proměnné. Význam koncového se liší od kontextu k kontextu, ale základní myšlenka je stejná.
- Poslední třídu nelze zdědit
- Konečná proměnná se stává konstantou a její hodnotu nelze změnit.
- Konečnou metodu nelze přepsat. To se provádí z bezpečnostních důvodů a tyto metody se používají pro optimalizaci.
Příklad - Naučte se abstraktní a konečná klíčová slova
Krok 1) Zkopírujte následující kód do editoru.
abstract class Shape{ final int b = 20; public void display(){ System.out.println("This is display method"); } abstract public void calculateArea(); } public class Rectangle extends Shape{ public static void main(String args[]){ Rectangle obj = new Rectangle(); obj.display(); //obj.b=200; } //public void calculateArea(){} }
Krok 2) Uložte, zkompilujte a spusťte kód.
Krok 3) Chyba =? Abstraktní metoda není implementována ve třídě Rectangle. Chcete-li problém vyřešit, zrušte komentář na řádku #15.
Krok 4) Odkomentujte řádek č. 13. Uložte a zkompilujte kód.
Krok 5) Chyba = ? proměnná b je konečná
Kdy použít abstraktní metody a abstraktní třídu?
Abstraktní metody jsou většinou deklarovány tam, kde dvě nebo více podtříd také dělají totéž různými způsoby prostřednictvím různých implementací. Také rozšiřuje stejnou třídu Abstract a nabízí různé implementace abstraktních metod.
Abstraktní třídy pomáhají popsat obecné typy chování a hierarchii tříd objektově orientovaného programování. Popisuje také podtřídy, které nabízejí podrobnosti o implementaci abstraktní třídy.
Shrnutí:
- Abstrakce v programování je proces výběru důležitých datových souborů pro Objekt ve vašem softwaru a vynechejte ty nepodstatné.
- Jakmile namodelujete svůj objekt pomocí Data Abstraction in Java, stejná sada dat může být použita v různých aplikacích.