Java Abstraction- Mastering OOP with Abstraction in Java



Tento článek o Java Abstraction vám pomůže pochopit použití třídy a rozhraní Abstract a jak toho dosáhnout pomocí Abstraction.

V předchozím blogu jste se dozvěděli o v Javě. Nyní v tomto blogu pochopíme ještě jeden důležitý pilíř tj. Java Abstraction, jehož hlavní funkcí je skrýt interní podrobnosti implementace.

V tomto článku se budu věnovat níže uvedeným tématům:





Můžete také projít touto nahrávkou kde můžete podrobně pochopit témata pomocí příkladů.



Abstrakce v OOP

Když obecně mluvíme o abstrakci, softwarový jazyk je příkladem abstrakce. Pojďme si vzít příklad a napsat prohlášení jako

x = y + z

Ve výše uvedeném prohlášení přidáváme dvě proměnné, které jsou uloženy na dvou různých místech, a poté výsledek uložíme do nového umístění. Co se tedy stane dál? Jak možná víte, jsou zde zahrnuty registry, sady instrukcí, čítače programů, paměťové jednotky atd. Když mluvíme o abstrakci v Javě, mluvíme o abstrakci v a jak toho je dosaženo. Koncept abstrakce v OOP začíná právě v okamžiku, kdy je třída koncipována. Abstrakce se aplikuje všude v softwaru a OOP.



Co je Java Abstraction?

Abstrakce není nic jiného než kvalita jednání s nápady, spíše než události. V zásadě se jedná o skrytí vnitřních detailů a zobrazení základních věcí uživateli.

Volání - Java Abstraction -Edureka

Pokud se podíváte na výše uvedený gif, můžete vidět, že vám někdo zavolá, dostaneme možnost jej buď zvednout, nebo jen odmítnout. Ale ve skutečnosti existuje spousta kódu, který běží na pozadí. Tady tedy neznáte interní zpracování generování hovoru, to je krása abstrakce. Abstrakce můžete dosáhnout dvěma způsoby:

a) Abstraktní třída

b) Rozhraní

Pojďme tyto pojmy pochopit podrobněji.

Abstraktní třída

Abstraktní třída obsahuje klíčové slovo „abstraktní“. Ale co to přesně znamená? Pokud vytvoříte třídu abstraktní, nelze ji vytvořit instancí, tj. Nemůžete vytvořit objekt abstraktní třídy. Abstraktní třída může také obsahovat abstraktní i konkrétní metody.

jak dynamicky přidělit pole v Javě

Poznámka: Pomocí abstraktní třídy můžete dosáhnout 0-100% abstrakce.

Chcete-li použít abstraktní třídu, musíte ji zdědit od základní třídy. Zde musíte poskytnout implementace pro abstraktní metody, jinak se stane abstraktní třídou.

Podívejme se na syntaxi abstraktní třídy:

Abstract class Sports {// abstract class sports Abstract void jump () // abstract method}

Rozhraní

Rozhraní v Javě je sbírka abstraktních metod a statických konstant. Jak možná víte v rozhraní, každá metoda je veřejná a abstraktní, ale neobsahuje žádný konstruktor. Spolu s abstrakcí rozhraní také pomáhá dosáhnout vícenásobné dědičnosti v Javě.
Poznámka: Pomocí rozhraní můžete dosáhnout 100% abstrakce.

Rozhraní je v zásadě skupina souvisejících metod s prázdnými těly. Pojďme pochopit rozhraní, vezmeme si příklad rozhraní Shape s jeho souvisejícími metodami.

tvar veřejného rozhraní {public void draw () public double getArea ()}

Tyto metody musí být přítomny v každém „tvaru“, že? Ale jejich práce bude jiná.

Předpokládejme, že chcete nakreslit tvar, například kruh, čtverec, obdélník atd. Jak již víte, každý tvar má své vlastní rozměry, jako je poloměr, výška a šířka. Řekněme, že chci nakreslit kruh a vypočítat jeho plochu. Vzhledem k tomu samému jsem ve výše uvedeném kódu vytvořil dvě metody, tj. Draw () a getArea (). Nyní pomocí těchto metod mohu nakreslit libovolný tvar a vypočítat plochu implementací jeho rozhraní.

Nyní se podívejme na funkčnost, jak můžete toto rozhraní implementovat.
Aby bylo možné implementovat toto rozhraní, název vaší třídy by se změnil na jakýkoli z tvarů, řekněme „kruh“. K implementaci rozhraní třídy tedy využiji klíčové slovo ‘implement’:

public class Circle implementuje 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 ('Area =' + c.getArea ())}}

Ve výše uvedeném příkladu jsem určil funkce pro různé metody a vypočítanou plochu kruhu. Tady, při implementaci rozhraní, umožňuje třídě, aby se stala formálnější ohledně chování, které poskytuje. Můžete také vytvořit jinou třídu, řekněme třídu „Obdélník“, která může zdědit „tvar“ stejného rozhraní s různými funkcemi.

Příklad abstrakce v Javě v reálném čase

Předpokládejme, že máme Sport jako rozhraní. Zde bude implementace zajišťována třídami zvanými „badminton“ a „fotbal“. V reálném scénáři koncový uživatel nebude znát implementační třídu. Objekt implementační třídy lze tedy poskytnout tovární metodou. Na základě nějakého kritéria lze k vytvoření objektu třídy implementace použít tovární metodu.
Implementujme totéž a vytvořme rozhraní s názvem Sport.java.

public Interface Sport {void play ()} // Nyní vytvoříme třídu s názvem 'Badminton' public class Badminton implementuje Sport {@Override public void play () {System.out.println ('Playing badminton')}} // Dále vytvořme naši poslední třídu „Fotbal“ veřejná třída Fotbal implementuje Sport {@Override public void play () {System.out.println ('Playing football')}

Posledním krokem je vytvoření hlavní třídy s názvem „SportInterface“.

public SportInterface {public static void main (String args []) {// váš kód zde}}

Když provedete výše uvedený program, bude výstup vypadat takto:

Hraní badmintonu ------------------- Hraní fotbalu

Doufám, že máte s rozhraním jasno a jak pomocí něj můžete dosáhnout abstrakce. Nyní pojďme uzavřít tento článek porovnáním Abstrakce a Zapouzdření.

Abstrakce vs zapouzdření

Abstrakce Zapouzdření
Řeší problém na úrovni designuŘeší problém na úrovni implementace
Používá se ke skrytí nežádoucích dat a poskytnutí relevantních výsledkůZapouzdření znamená skrývání kódu a dat do jedné jednotky k ochraně dat před vnějším světem
Vnější rozložení - používá se z hlediska designuVnitřní rozložení - používá se z hlediska implementace

Doufám, že jste pochopili rozdíl mezi Abstrakcí a Zapouzdřením. S tím jsme skončili na blogu Java Abstraction. Doufám, že jste to shledali informativní a pomohlo vám to zvýšit hodnotu vašich znalostí. Pokud se chcete o Javě dozvědět více, můžete se podívat na

Nyní, když jste pochopili „Co je Java Abstraction“, podívejte se na Edureka, důvěryhodná online vzdělávací společnost se sítí více než 250 000 spokojených studentů po celém světě. Školicí a certifikační kurz Edureka Java J2EE a SOA je určen pro studenty a profesionály, kteří chtějí být vývojářem Java. Kurz je navržen tak, aby vám poskytl náskok v programování v Javě a naučil vás základní i pokročilé koncepty Javy spolu s různými jávskými rámci, jako je Hibernate & Spring.

Máte na nás dotaz? Uveďte to prosím v sekci komentářů v tomto blogu „Java Abstraction“ a my se vám ozveme co nejdříve.