V predchádzajúcom blogu ste sa dozvedeli o v Jave. Teraz v tomto blogu pochopíme ešte jeden dôležitý pilier tj. Java Abstraction, ktorej hlavnou funkciou je skryť podrobnosti vnútornej implementácie.
Nižšie uvedeným témam sa budem venovať v tomto článku:
- Abstrakcia v OOP
- Čo je to Java Abstraction?
- Abstraktná trieda
- Rozhranie
- Skutočný príklad Abstrakcie v Jave
- Abstrakcia vs zapuzdrenie
Môžete tiež prejsť týmto záznamom kde môžete podrobne porozumieť témam pomocou príkladov.
Abstrakcia v OOP
Keď hovoríme všeobecne o abstrakcii, softvérový jazyk je príkladom abstrakcie. Zoberme si príklad a napíšme vyhlásenie
x = y + z
Vo vyššie uvedenom príkaze pridávame dve premenné, ktoré sú uložené na dvoch rôznych miestach, a potom uložíme výsledok do nového umiestnenia. Čo sa stane potom? Ako možno viete, sú do toho zapojené registre, sady inštrukcií, počítadlá programov, pamäťové jednotky atď. Keď hovoríme o abstrakcii v Jave, hovoríme o abstrakcii v a ako sa to dosahuje. Koncept abstrakcie v OOP začína práve v okamihu, keď je trieda počatá. Abstrakcia sa aplikuje všade v softvéri a OOP.
Čo je to Java Abstraction?
Abstrakcia nie je nič iné ako kvalita riešenia myšlienok, nie udalosti. V zásade ide o skrytie vnútorných detailov a zobrazenie základných vecí používateľovi.
Ak sa pozriete na vyššie uvedený obrázok GIF, môžete zistiť, či vám pri hovore príde hovor, dostaneme možnosť ho buď zdvihnúť, alebo iba odmietnuť. Ale v skutočnosti existuje veľa kódu, ktorý beží na pozadí. Takže tu nepoznáte interné spracovanie toho, ako sa generuje hovor, to je krása abstrakcie. Abstrakciu môžete dosiahnuť dvoma spôsobmi:
a) Abstraktná trieda
b) Rozhranie
Pochopme tieto pojmy podrobnejšie.
Abstraktná trieda
Abstraktná trieda obsahuje kľúčové slovo „abstraktné“. Čo to ale presne znamená? Ak urobíte triedu abstraktnou, nemožno ju vytvoriť inštanciou, to znamená, že nemôžete vytvoriť objekt abstraktnej triedy. Abstraktná trieda môže tiež obsahovať abstraktné aj konkrétne metódy.
ako dynamicky alokovať pole v jave
Poznámka: Pomocou abstraktnej triedy môžete dosiahnuť 0-100% abstrakciu.
Ak chcete použiť abstraktnú triedu, musíte ju zdediť od základnej triedy. Tu musíte poskytnúť implementácie pre abstraktné metódy, inak sa stane abstraktnou triedou.
Pozrime sa na syntax abstraktnej triedy:
Abstraktná trieda Šport {// abstraktná trieda šport Abstraktné void jump () // abstraktná metóda}
Rozhranie
Rozhranie v Jave je súborom abstraktných metód a statických konštánt. Ako možno viete v rozhraní, každá metóda je verejná a abstraktná, neobsahuje však žiadny konštruktor. Spolu s abstrakciou rozhranie tiež pomáha dosiahnuť viacnásobné dedičstvo v Jave.
Poznámka: 100% abstrakciu dosiahnete pomocou rozhraní.
Rozhranie je v zásade skupina príbuzných metód s prázdnymi telami. Poďme si porozumieť rozhraniam na príklade rozhrania služby Shape s príslušnými metódami.
tvar verejného rozhrania {public void draw () public double getArea ()}
Tieto metódy musia byť prítomné v každom „tvare“, nie? Ich práca však bude iná.
Predpokladajme, že chcete nakresliť tvar, napríklad kruh, štvorec, obdĺžnik atď. Už viete, že každý tvar má svoje vlastné rozmery, ako je polomer, výška a šírka. Povedzme, že chcem nakresliť kruh a vypočítať jeho plochu. Vzhľadom na to isté som vo vyššie uvedenom kóde vytvoril dve metódy, tj. Draw () a getArea (). Teraz pomocou týchto metód môžem nakresliť ľubovoľný tvar a vypočítať plochu implementáciou jej rozhrania.
Teraz sa pozrime na funkčnosť, ako môžete implementovať toto rozhranie.
S cieľom implementovať toto rozhranie by sa názov vašej triedy zmenil na ľubovoľný tvar, povedzme „kruh“. Na implementáciu rozhrania triedy teda využijem kľúčové slovo ‘implement’:
public class Circle implements Shape {private double radius public Circle (double r) {this.radius = r} void draw () {System.out.println ('Drawing Circle')} public double getArea () {return Math.PI * this.radius * this.radius} public double getRadius () {return this.radius}} public class Test {public static void main (String args []) {Shape c = new Circle (8) c.draw () System. out.println ('Plocha =' + c.getArea ())}}
Vo vyššie uvedenom príklade som špecifikoval funkcionality pre rôzne metódy a vypočítanú plochu kruhu. Tu pri implementácii rozhrania umožňuje triede formalizovať správanie, ktoré poskytuje. Môžete tiež vytvoriť ďalšiu triedu, napríklad triedu „Obdĺžnik“, ktorá môže zdediť rovnaký tvar „rozhrania“ s rôznymi funkciami.
Príklad abstrakcie v Jave v reálnom čase
Predpokladajme, že máme Sport ako rozhranie. Tu budú implementáciu zabezpečovať triedy zvané „badminton“ a „futbal“. V skutočnom scenári koncový používateľ nebude vedieť o triede implementácie. Preto objekt implementačnej triedy možno poskytnúť továrenskou metódou. Na vytvorenie kritéria triedy implementácie je možné na základe nejakého kritéria použiť továrenskú metódu.
Implementujme to isté a vytvorme rozhranie s názvom Sport.java.
public Interface Sport {void play ()} // Teraz vytvoríme triedu s názvom 'Badminton' public class Badminton implementuje Sport {@Override public void play () {System.out.println ('Playing badminton')}} // Ďalej poďme vytvoriť našu poslednú triedu „Futbal“, ktorá je verejnou triedou Futbal implementuje Šport {@Override public void play () {System.out.println ('Playing football')}
Posledným krokom je vytvorenie hlavnej triedy s názvom „SportInterface“.
public SportInterface {public static void main (String args []) {// váš kód tu}}
Po vykonaní vyššie uvedeného programu bude výstup nasledovný:
Hrať bedminton ------------------- Hrať futbal
Dúfam, že máte prehľad o rozhraní a o tom, ako pomocou neho dosiahnete abstrakciu. Teraz uzavrime tento článok porovnaním Abstrakcie a Zapuzdrenia.
Abstrakcia vs zapuzdrenie
Abstrakcia | Zapuzdrenie |
Rieši problém na dizajnovej úrovni | Rieši problém na úrovni implementácie |
Používa sa na skrytie nežiaducich údajov a poskytnutie relevantných výsledkov | Zapuzdrenie znamená skrytie kódu a údajov do jednej jednotky na ochranu údajov pred vonkajším svetom |
Vonkajšie usporiadanie - používané z hľadiska dizajnu | Vnútorné usporiadanie - používa sa z hľadiska implementácie |
Dúfam, že ste pochopili rozdiel medzi Abstrakciou a Zapuzdrením. Týmto sme skončili na blogu Java Abstraction. Dúfam, že ste to zistili informatívne a pomohlo vám to zhodnotiť vaše vedomosti. Ak sa chcete dozvedieť viac informácií o prostredí Java, môžete sa pozrieť na stránku
Teraz, keď ste pochopili „Čo je to Java Abstraction“, pozrite sa na autor: Edureka, dôveryhodná online vzdelávacia spoločnosť so sieťou viac ako 250 000 spokojných študentov rozmiestnených po celom svete. Výcvikový a certifikačný kurz Edureka Java J2EE a SOA je určený pre študentov a profesionálov, ktorí chcú byť vývojármi Java. Kurz je navrhnutý tak, aby vám dal náskok v programovaní v jazyku Java a naučil vás základné aj pokročilé koncepty jazyka Java spolu s rôznymi rámcami Java, ako je Hibernate & Spring.
Máte na nás otázku? Uveďte to prosím v sekcii komentárov v tomto blogu „Java Abstraction“ a my sa vám ozveme čo najskôr.