Java Abstraction - Mastering OOP med Abstraction in Java



Denne artikel om Java-abstraktion hjælper dig med at forstå brugen af ​​abstrakt klasse og interface og hvordan du opnår det ved hjælp af abstraktion.

I den forrige blog lærte du om i Java. Nu i denne blog vil vi forstå endnu en vigtig søjle i dvs Java Abstraction, hvis hovedfunktionalitet er at skjule de interne implementeringsoplysninger.

Jeg vil dække nedenstående emner i denne artikel:





Du kan også gennemgå denne optagelse af hvor du kan forstå emnerne på en detaljeret måde med eksempler.



Abstraktion i OOP

Når vi generelt taler om abstraktion, er softwaressproget et eksempel på abstraktion. Lad os tage et eksempel og skrive en erklæring som-

x = y + z

I ovenstående erklæring tilføjer vi to variabler, der er gemt på to forskellige placeringer og derefter gemmer resultatet på en ny placering. Så hvad sker der derefter? Som du måske ved, er der registre, instruktionssæt, programtællere, lagerenheder osv. Involveret. Når vi refererer til abstraktion i Java, taler vi om abstraktion i og hvordan det opnås. Begrebet abstraktion i OOP starter lige i det øjeblik, hvor en klasse bliver undfanget. Abstraktion anvendes overalt i software og OOP.



Hvad er Java Abstraction?

Abstraktion er intet andet end kvaliteten af ​​at håndtere ideer snarere end begivenheder. Det handler grundlæggende med at skjule de interne detaljer og vise de væsentlige ting for brugeren.

Opkald - Java Abstraction -Edureka

vende et tal i java

Hvis du ser på ovenstående gif, kan du se, hvornår du får et opkald, vi får en mulighed for enten at hente det eller bare afvise det. Men i virkeligheden er der en masse kode, der kører i baggrunden. Så her kender du ikke den interne behandling af, hvordan et opkald genereres, det er skønheden ved abstraktion. Du kan opnå abstraktion på to måder:

a) Abstrakt klasse

b) Interface

Lad os forstå disse begreber mere detaljeret.

Abstrakt klasse

Abstrakt klasse indeholder 'abstrakt' nøgleordet. Men hvad betyder det præcist? Hvis du gør klassen abstrakt, kan den ikke instantieres, dvs. du kan ikke oprette et objekt i en abstrakt klasse. En abstrakt klasse kan også indeholde både abstrakte og konkrete metoder.

Bemærk: Du kan opnå 0-100% abstraktion ved hjælp af en abstrakt klasse.

For at bruge en abstrakt klasse skal du arve den fra basisklassen. Her skal du give implementeringer til de abstrakte metoder, ellers bliver det en abstrakt klasse.

Lad os se på syntaksen for en abstrakt klasse:

Abstrakt klasse Sport {// abstrakt klassesport Abstrakt ugyldigt spring () // abstrakt metode}

Interface

En grænseflade i Java er en samling af abstrakte metoder og statiske konstanter. Som du måske ved i en grænseflade, er hver metode offentlig og abstrakt, men den indeholder ingen konstruktører. Sammen med abstraktion hjælper grænsefladen også med at opnå flere arv i Java.
Bemærk: Du kan opnå 100% abstraktion ved hjælp af grænseflader.

Dybest set er Interface en gruppe relaterede metoder med tomme kroppe. Lad os forstå grænseflader ved at tage et eksempel på en Shape-interface med dens relaterede metoder.

forskellen mellem c c # og c ++
offentlig grænsefladesform {public void draw () public double getArea ()}

Disse metoder skal være til stede i enhver 'form', ikke? Men deres arbejde vil være anderledes.

Lad os antage, at du vil tegne en form, f.eks. Cirkel, firkant, rektangel osv. Du ved allerede, at hver figur har sine egne dimensioner som radius, højde og bredde. Sig, at jeg vil tegne en cirkel og beregne dens areal. I betragtning af det samme har jeg oprettet to metoder i ovenstående kode, dvs. tegne () og getArea (). Nu ved hjælp af disse metoder kan jeg tegne enhver form og beregne området ved at implementere dets interface.

Lad os nu se på funktionaliteten, hvordan du kan implementere denne grænseflade.
For at implementere denne grænseflade, ville navnet på din klasse ændre sig til en hvilken som helst af figuren, lad os sige 'Cirkel'. Så for at implementere klasseinterfacet vil jeg gøre brug af 'implementere' nøgleord:

offentlig klasse Cirkel implementerer figur {privat dobbeltradius offentlig cirkel (dobbelt r) {this.radius = r} ugyldig tegning () {System.out.println ('Drawing Circle')} offentlig dobbelt 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 ovenstående eksempel har jeg specificeret funktionaliteter til de forskellige metoder og beregnet areal for en cirkel. Her, ved implementering af en grænseflade, giver det en klasse mulighed for at blive mere formel om den adfærd, den giver. Du kan også oprette en anden klasse, sig 'klasse' rektangel, der kan arve den samme interface 'form' med forskellige funktioner.

Realtidseksempel på abstraktion i java

Antag, at vi har Sport som interface. Her vil implementering blive leveret af klasser kaldet “Badminton” og “Fodbold”. I et reelt scenario vil en slutbruger ikke være opmærksom på implementeringsklassen. Derfor kan et objekt fra implementeringsklassen leveres ved hjælp af fabriksmetoden. Fabriksmetoden kan bruges til at oprette et objekt fra implementeringsklassen baseret på et eller andet kriterium.
Lad os implementere det samme og oprette en grænseflade kaldet Sport.java.

public Interface Sport {void play ()} // Nu opretter vi klasse med navnet 'Badminton' offentlig klasse Badminton implementerer Sport {@Override public void play () {System.out.println ('Playing badminton')}} // Lad os derefter oprette vores sidste klasse 'Fodbold' offentlig klasse Fodbold implementerer Sport {@ Override public void play () {System.out.println ('Playing football')}

Det sidste trin er at oprette en hovedklasse ved navn “SportInterface”.

hvordan man sorterer et array c ++
public SportInterface {public static void main (String args []) {// din kode her}}

Når du udfører ovenstående program, vil output være som vist nedenfor:

Spiller badminton ------------------- Spiller fodbold

Jeg håber, I er klare med grænsefladen, og hvordan I kan opnå abstraktion ved hjælp af den. Lad os nu afslutte denne artikel ved at sammenligne abstraktion og indkapsling.

Abstraktion vs indkapsling

Abstraktion Indkapsling
Løser problemet på designniveauLøser problemet på implementeringsniveauet
Bruges til at skjule uønskede data og give relevante resultaterIndkapsling betyder at skjule koden og dataene i en enkelt enhed for at beskytte data fra omverdenen
Ydre layout - bruges med hensyn til designIndre layout - bruges med hensyn til implementering

Jeg håber, du forstod forskellen mellem abstraktion og indkapsling. Med dette kommer vi til en ende på Java Abstraction-bloggen. Håber, du fandt det informativt, og det hjalp med at tilføje værdi til din viden. Hvis du ønsker at lære mere om Java, kan du henvise til

Nu hvor du har forstået 'Hvad er Java Abstraction', skal du tjekke af Edureka, et pålideligt online læringsfirma med et netværk på mere end 250.000 tilfredse elever spredt over hele kloden. Edurekas Java J2EE- og SOA-uddannelses- og certificeringskursus er designet til studerende og fagfolk, der ønsker at være Java-udvikler. Kurset er designet til at give dig et forspring i Java-programmering og træne dig til både kerne- og avancerede Java-koncepter sammen med forskellige Java-rammer som Hibernate & Spring.

Har du et spørgsmål til os? Nævn det i kommentarfeltet på denne “Java Abstraction” -blog, og vi vender tilbage til dig hurtigst muligt.