Abstraktion i Java

Hvad er abstraktion i Java?

abstraktion er begrebet objektorienteret programmering, der kun "viser" væsentlige attributter og "skjuler" unødvendig information. Hovedformålet med abstraktion er at skjule de unødvendige detaljer for brugerne. Abstraktion er at vælge data fra en større pulje for kun at vise relevante detaljer om objektet til brugeren. Det hjælper med at reducere programmeringskompleksitet og indsats. Det er et af de vigtigste begreber i OOP'er.

Klik link. hvis videoen ikke er tilgængelig

Lad os studere abstraktion i OOP'er med eksempel:

Antag, at du vil oprette en bankapplikation, og du bliver bedt om at indsamle alle oplysninger om din kunde. Der er chancer for, at du kommer med følgende oplysninger om kunden

Abstraktion i Java
Abstraktion i Java

Men ikke alle ovenstående oplysninger er nødvendige for at oprette en bankapplikation. Så du skal kun vælge de nyttige oplysninger til din bankansøgning fra den pool. Data som navn, adresse, skatteoplysninger osv. giver mening for en bankapplikation, som er et abstraktionseksempel i OOP'er

Abstraktion i Java

Da vi har hentet/fjernet/valgt kundeoplysningerne fra en større pulje, omtales processen som Abstraktion i OOP'er. Men den samme information, når den først er udtrukket, kan bruges til en lang række applikationer. For eksempel kan du bruge de samme data til hospitalsansøgninger, jobportalansøgninger, en regeringsdatabase osv. med få eller ingen ændringer. Derfor bliver det dine stamdata. Dette er en fordel ved abstraktion i OOP'er.

Forskellen mellem abstraktion og indkapsling

abstraktion Indkapsling
Abstraktion i objektorienteret programmering løser problemerne på designniveau. Indkapsling løser det implementeringsniveau.
Abstraktion i programmering handler om at skjule uønskede detaljer og samtidig vise de mest væsentlige oplysninger. Indkapsling betyder at binde koden og data til en enkelt enhed.
Dataabstraktion i Java giver mulighed for at fokusere på, hvad informationsobjektet skal indeholde Indkapsling betyder at skjule de interne detaljer eller mekanikken for, hvordan et objekt gør noget af sikkerhedsmæssige årsager.

Forskellen mellem abstrakt klasse og grænseflade

Abstrakt klasse grænseflade
En abstrakt klasse kan have både abstrakte og ikke-abstrakte metoder. Grænsefladen kan kun have abstrakte metoder.
Det understøtter ikke flere arv. Det understøtter flere arv.
Det kan give implementeringen af ​​grænsefladen. Det kan ikke give implementeringen af ​​den abstrakte klasse.
En abstrakt klasse kan have beskyttede og abstrakte offentlige metoder. En grænseflade kan kun have offentlige abstrakte metoder.
En abstrakt klasse kan have en endelig, statisk eller statisk slutvariabel med en hvilken som helst adgangsspecifikation. Grænsefladen kan kun have en offentlig statisk slutvariabel.

Hvad er abstrakt klasse?

ABSTRAKT KLASSE er en type klasse i Java, der erklærer en eller flere abstrakte metoder. Disse klasser kan have abstrakte metoder såvel som konkrete metoder. En normal klasse kan ikke have abstrakte metoder. En abstrakt klasse er en klasse, der indeholder mindst én abstrakt metode. Vi kan forstå konceptet ved form eksempel i java.

Overvej følgende klassehierarki bestående af en Shape-klasse, som er nedarvet af tre klasser Rektangel, Cirkel og Trekant. Shape-klassen er oprettet for at spare på almindelige attributter og metoder, der deles af de tre klasser Rektangel, Cirkel og Trekant. calculateArea() er en sådan metode, der deles af alle tre underordnede klasser og findes i Shape-klassen.

Abstrakt klasse i Java

Eksempel på formabstraktion

Antag nu, at du skriver kode for at oprette objekter til klasserne afbildet ovenfor. Lad os se, hvordan disse genstande vil se ud i en praktisk verden. Et objekt i klassens rektangel vil give et rektangel, en form vi så almindeligt observerede i hverdagen.

Abstrakt klasse

Et objekt af klassetrekanten vil give en trekant, igen en almindelig hverdagsform.

Abstrakt klasse

Men hvordan ville et objekt af Class Shape se ud i en praktisk verden ??

Abstrakt klasse

Hvis du observerer, tjener Shape-klassen vores mål om at nå arv og polymorfi. Men det var ikke bygget til at blive instansieret. Sådanne klasser kan mærkes Abstrakt. En abstrakt java-klasse kan ikke instantieres.

Syntaks:

abstract class Shape{
	// code
}

Det er muligt, at du IKKE mærker Shape class som Abstrakt og derefter instansierer den. Men et sådant objekt vil ikke have nogen brug i din kode og vil åbne et rum for potentielle fejl. Derfor er dette ikke ønskeligt.

Hvad er abstrakte metoder i Java?

ABSTRAKT METODE in Java, er en metode, der kun har metodedefinitionen, men som ikke indeholder implementering. En metode uden krop er kendt som en abstrakt metode. Det skal deklareres i en abstrakt klasse. Den abstrakte metode vil aldrig være endelig, fordi den abstrakte klasse skal implementere alle de abstrakte metoder.

Som vi alle ved, er formlen til at beregne areal for rektangel, cirkel og trekant anderledes. calculateArea()-metoden skal tilsidesættes af de nedarvede klasser. Det giver ingen mening at definere det i Shape-klassen, men vi er nødt til at sikre os, at alle de nedarvede klasser har metoden.

Sådanne metoder kan mærkes abstrakt.

Syntaks:

abstract public void calculateArea();

Til en abstrakt metode, ingen implementering er påkrævet. Kun metodens signatur er defineret.

Eksempel på abstraktionskode

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();
}  
}

Fordele ved abstraktion

  • Den største fordel ved at bruge en abstraktion i Programmering er, at det giver dig mulighed for at gruppere flere relaterede klasser som søskende.
  • Abstraktion i objektorienteret programmering hjælper med at reducere kompleksiteten af ​​design- og implementeringsprocessen af ​​software.

Sidste søgeord i Java

Den endelige modifikator gælder for klasser, metoder og variabler. Betydningen af ​​endelig varierer fra kontekst til kontekst, men den væsentlige idé er den samme.

  • En sidste klasse kan ikke arves
  • En endelig variabel bliver en konstant, og dens værdi kan ikke ændres.
  • En endelig metode kan ikke tilsidesættes. Dette gøres af sikkerhedsmæssige årsager, og disse metoder bruges til optimering.

Eksempel :- At lære abstrakte og endelige nøgleord

Trin 1) Kopier følgende kode ind i en Editor.

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(){}
}

Trin 2) Gem, kompilér og kør koden.

Trin 3) Fejl =? Den abstrakte metode er ikke implementeret i klassen Rectangle. Fjern kommentar linje #15 for at løse problemet.

Trin 4) Fjern kommentar linje # 13. Gem og kompilér koden.

Trin 5) Fejl = ? variabel b er endelig

Hvornår skal man bruge abstrakte metoder og abstrakt klasse?

Abstrakte metoder er for det meste erklæret, hvor to eller flere underklasser også gør det samme på forskellige måder gennem forskellige implementeringer. Det udvider også den samme abstrakte klasse og tilbyder forskellige implementeringer af de abstrakte metoder.

Abstrakte klasser hjælper med at beskrive generiske typer adfærd og objektorienteret programmeringsklassehierarki. Den beskriver også underklasser for at tilbyde implementeringsdetaljer for den abstrakte klasse.

Sammendrag:

  • Abstraktion i programmering er processen med at udvælge vigtige datasæt for en Object i din software og udelade de ubetydelige.
  • Når du har modelleret dit objekt ved hjælp af Data Abstraction i Java, kunne det samme sæt data bruges i forskellige applikationer.