Java Abstraction - Mastering OOP med Abstraction in Java



Den här artikeln om Java Abstraction hjälper dig att förstå användningen av abstraktklassen och gränssnittet och hur du uppnår det med hjälp av Abstraction.

I den tidigare bloggen lärde du dig om i Java. Nu i denna blogg kommer vi att förstå en viktig pelare till dvs Java Abstraction vars huvudsakliga funktion är att dölja detaljerna om den interna implementeringen.

Jag kommer att täcka nedanstående ämnen i den här artikeln:





Du kan också gå igenom denna inspelning av där du kan förstå ämnena på ett detaljerat sätt med exempel.



skillnad mellan forskarutbildning och magisterexamen

Abstraktion i OOP

När vi i allmänhet pratar om abstraktion är mjukvaruspråket ett exempel på abstraktion. Låt oss ta ett exempel och skriva ett uttalande som-

x = y + z

I ovanstående uttalande lägger vi till två variabler som lagras på två olika platser och sedan lagrar resultatet på en ny plats. Så, vad händer härnäst? Som du kanske vet finns det register, instruktionsuppsättningar, programräknare, lagringsenheter etc.. När vi hänvisar till abstraktion i Java talar vi om abstraktion i och hur det uppnås. Begreppet abstraktion i OOP börjar precis i det ögonblick när en klass blir gravid. Abstraktion tillämpas överallt i programvara och OOP.



Vad är Java Abstraction?

Abstraktion är inget annat än kvaliteten på att hantera idéer snarare än händelser. Det handlar i princip om att dölja de interna detaljerna och visa de viktigaste sakerna för användaren.

Calling - Java Abstraction -Edureka

Om du tittar på ovanstående gif kan du se när du får ett samtal, vi får ett alternativ att antingen plocka upp det eller bara avvisa det. Men i verkligheten finns det mycket kod som körs i bakgrunden. Så här vet du inte den interna behandlingen av hur ett samtal genereras, det är skönheten i abstraktion. Du kan uppnå abstraktion på två sätt:

a) Abstrakt klass

b) Gränssnitt

Låt oss förstå dessa begrepp mer detaljerat.

Abstrakt klass

Abstraktklassen innehåller 'abstrakt' nyckelord. Men vad betyder det exakt? Om du gör klassen abstrakt kan den inte instantieras, det vill säga du kan inte skapa ett objekt i en abstrakt klass. En abstrakt klass kan också innehålla både abstrakta och konkreta metoder.

Notera: Du kan uppnå 0-100% abstraktion med en abstrakt klass.

För att använda en abstrakt klass måste du ärva den från basklassen. Här måste du ge implementeringar för de abstrakta metoderna, annars blir det en abstrakt klass.

Låt oss titta på syntaxen för en abstrakt klass:

Abstrakt klass Sport {// abstrakt klass sport Abstrakt ogiltigt hopp () // abstrakt metod}

Gränssnitt

Ett gränssnitt i Java är en samling abstrakta metoder och statiska konstanter. Som du kanske vet i ett gränssnitt är varje metod offentlig och abstrakt men den innehåller ingen konstruktör. Tillsammans med abstraktion hjälper gränssnittet också till att uppnå flera arv i Java.
Notera: Du kan uppnå 100% abstraktion med gränssnitt.

I grund och botten är Interface en grupp relaterade metoder med tomma kroppar. Låt oss förstå gränssnitt genom att ta ett exempel på ett Shape-gränssnitt med dess relaterade metoder.

offentligt gränssnittsform {public void draw () public double getArea ()}

Dessa metoder måste finnas i alla ”former”, eller hur? Men deras arbete kommer att bli annorlunda.

Låt oss anta att du vill rita en form, säg cirkel, kvadrat, rektangel etc. Du vet redan, varje form har sina egna dimensioner som radie, höjd och bredd. Säg att jag vill rita en cirkel och beräkna dess yta. Med tanke på detsamma har jag skapat två metoder i ovanstående kod, dvs. draw () och getArea (). Nu, med hjälp av dessa metoder, kan jag rita vilken form som helst och beräkna området genom att implementera dess gränssnitt.

Låt oss nu titta på funktionaliteten för hur du kan implementera detta gränssnitt.
För att implementera detta gränssnitt skulle namnet på din klass ändras till vilken som helst av formen, låt oss säga 'Cirkel'. Så för att implementera klassgränssnittet kommer jag att använda nyckelordet 'implementera':

public class Cirkel implementerar Shape {privat dubbelradie 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 ())}}

I exemplet ovan har jag specificerat funktioner för de olika metoderna och beräknat område för en cirkel. Här, när det implementerar ett gränssnitt, tillåter det en klass att bli mer formell om beteendet som den ger. Du kan också skapa en annan klass, säg 'Rectangle' -klassen som kan ärva samma gränssnittsform med olika funktioner.

Realtidsexempel på abstraktion i java

Antag att vi har Sport som gränssnitt. Här kommer genomförandet att tillhandahållas av klasser som kallas 'Badminton' och 'Fotboll'. I ett verkligt scenario kommer en slutanvändare inte att vara medveten om implementeringsklassen. Därför kan ett objekt av implementeringsklassen tillhandahållas med fabriksmetoden. Fabriksmetoden kan användas för att skapa ett objekt för implementeringsklassen baserat på något kriterium.
Låt oss implementera detsamma och skapa ett gränssnitt som heter Sport.java.

public Interface Sport {void play ()} // Nu skapar vi klass med namnet 'Badminton' public class Badminton implementerar Sport {@Override public void play () {System.out.println ('Playing badminton')}} // Låt oss sedan skapa vår sista klass 'Fotboll' offentlig klass Fotboll implementerar Sport {@Override public void play () {System.out.println ('Spela fotboll')}

Det sista steget är att skapa en huvudklass med namnet 'SportInterface'.

public SportInterface {public static void main (String args []) {// din kod här}}

När du kör programmet ovan kommer utmatningen att visas som nedan:

Spela badminton ------------------- Spela fotboll

Jag hoppas att ni är tydliga med gränssnittet och hur ni kan uppnå abstraktion med det. Låt oss nu avsluta den här artikeln genom att jämföra abstraktion och inkapsling.

cloudera certifierad administratör för apache hadoop

Abstraktion vs inkapsling

Abstraktion Inkapsling
Löser problemet på designnivåLöser problemet på implementeringsnivån
Används för att dölja oönskade data och ge relevanta resultatInkapsling innebär att dölja koden och data i en enda enhet för att skydda data från omvärlden
Yttre layout - används designmässigtInre layout - används när det gäller implementering

Jag hoppas att du förstod skillnaden mellan abstraktion och inkapsling. Med detta kommer vi till ett slut på Java Abstraction-bloggen. Hoppas, du tyckte att det var informativt och det hjälpte till att tillföra värde till din kunskap. Om du vill lära dig mer om Java kan du hänvisa till

Nu när du har förstått 'Vad är Java Abstraction', kolla in av Edureka, ett pålitligt online-lärande företag med ett nätverk av mer än 250 000 nöjda elever spridda över hela världen. Edurekas Java J2EE- och SOA-utbildning och certifieringskurs är utformad för studenter och yrkesverksamma som vill bli Java-utvecklare. Kursen är utformad för att ge dig ett försprång till Java-programmering och träna dig för både kärn- och avancerade Java-koncept tillsammans med olika Java-ramverk som Hibernate & Spring.

Har du en fråga till oss? Vänligen nämna det i kommentarsektionen i denna 'Java Abstraction' -blogg så återkommer vi till dig så snart som möjligt.