Abstrakt metode i Java: Shape Class Eksempel

Hvad er abstraktion i Java?

Abstraktion i JAVA viser kun de væsentlige egenskaber og skjuler unødvendige details af objektet fra brugeren. I Java udføres abstraktion ved hjælp af abstrakt klasse, abstrakte metoder og grænseflader. Abstraktion hjælper med at reducere programmering complexevne og indsats.

I denne tutorial lærer du-

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

Abstrakt klasse i Java: Vigtige pointer

  • En abstrakt klasse kan har også konkrete (komplette) metoder.
  • Til designformål kan en klasse erklæres abstrakt, selvom den ikke indeholder nogen abstrakte metoder
  • Reference af en abstrakt klasse kan pege på objekter af dens underklasser og derved opnå runtime polymorfi Eks: Shape obj = new Rectangle();
  • En klasse skal obligatorisk mærkes abstrakt, hvis den har en eller flere abstrakte metoder.

Endeligt 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 folloenwing 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

Regler for abstrakt metode

  • Abstrakte metoder har ikke en implementering; den har kun metodesignatur
  • Hvis en klasse bruger en abstrakt metode, skal de erklæres abstrakt. Det modsatte kan ikke være sandt. Det betyder, at en abstrakt klasse ikke nødvendigvis har en abstrakt metode.
  • Hvis en almindelig klasse udvider en abstrakt klasse, skal den klasse implementere alle abstrakte metoder fra den abstrakte forælder