Hvad er abstrakt klasse i Java?

  • Abstrakte klasser er som alle andre normale klasser i java. Den største forskel mellem abstrakt klasse og normal klasse er at skabe den abstrakte klasse, vi har brug for for at bruge 'ABSTARCT' nøgleordet. Det er en adskillelse af klasseimplementering.
  • De brugte til at definere de meget almindelige træk i dets underklasser. En sådan type klasse blev refereret til som Abstrakt klasse.
  • Det vigtigste kan vi ikke skabe et objekt fra en abstrakt klasse.
  • Abstrakte klasser kan indeholde abstrakte såvel som ikke-abstrakte metoder. De kan ikke indeholde et organ af den abstrakte metode, der kun kan leveres af underklassen. Hvis underklassen ikke leverer implementeringen af ​​den abstrakte metode, så er vi nødt til at gøre det ABSTRAKT eksplicit.
  • Med andre ord, hvis en klasse indeholder en abstrakt metode, er den nødt til at definere sig selv som ABSTARCT.
  • Ved at bruge abstrakte klasser kan vi gruppere flere java-klasser sammen, det optimerer også koden og gør koden mere læsbar og reducerer redundans. Det giver også en skabelon til fremtidige klasser.

Syntaks for abstrakt klasse i Java

Hvordan fungerer abstrakt klasse i Java?

  • En abstrakt klasse har en abstrakt metode og ikke-abstrakt metode, dvs. abstrakt metode uden krop, og de kan også have metoder med implementering.
  • En abstrakt klasse bruges til at give det mest almindelige træk, der er specifikt for forskellige klasser. Underklasser kan give en anden implementering af disse abstrakte metoder i henhold til deres behov eller krav.
  • Vi kan ikke oprette et objekt fra en abstrakt klasse ved hjælp af den 'nye' operator, men vi kan stadig definere dens konstruktør, som kun kan påberåbes i konstruktøren af ​​dens underklasse. Underklassekonstruktør kan få adgang til en superklassekonstruktør til at initialisere dens variabel, som muligvis bruger i underklassen til yderligere krav.

Eksempler på abstrakt klasse i Java

Human.java

package com.cont.article;
public abstract class Human
(
public abstract void whatTheylike();
public void doTheysleep()
(
System. out .println("Yes every human require sleep.");
)
)

Human1.java

package com.cont.article;
public class Human1 extends Human
(
@Override
public void whatTheylike()
(
System. out .println("we like to have icecream.");
)
)

Human2.java

package com.cont.article;
public class Human2 extends Human
(
@Override
public void whatTheylike()
(
System. out .println("we like to have coffee.");
)
)

TestHuman.java

package com.cont.article;
public class TestHuman
(
public static void main(String() args)
(
Human human1 = new Human1();
human1.whatTheylike();
Human human2 = new Human2();
human2.whatTheylike();
human1.doTheysleep();
human2.doTheysleep();
)
)

Produktion:

I ovenstående eksempel har vi MENNESK som en abstrakt klasse, der definerer et menneskes fælles behov, lide og ikke kan lide. Der er forskellige typer mennesker med forskellige lide og ikke lide. Så hvert menneske kan give en specifik implementering af, hvad de kan lide. Det vil kun være specifikt for dem.

Den største fordel ved abstrakt klasse er, at vi har en specifik implementering af metoder i henhold til et krav, der også fører til at reducere redundans, øger kodelæsbarheden, skjuler implementeringen af ​​metoder og dermed giver delvis abstraktion.

Vi kan have endnu et eksempel til at forstå, hvornår vi skal bruge abstrakte klasser.

  • Vi bør bruge abstrakt klasse, når vi vil dele fælles funktionalitet mellem forskellige klasser med specifik implementering.
  • I abstrakte klasser skal felter ikke være statiske og endelige, vi kan også have konkrete metoder, der defineres som private, offentlige og beskyttede.

Lad os sige, at vi har en dyreklasse. Der er sorter af dyr, vi har på jorden, og de er alle forskellige fra hinanden i en eller anden forstand. Det vil indeholde alle de fælles træk ved alle.

Nu kan denne dyreklasse ikke have metoder, der er specifikke for hvert dyr. Så med begrebet abstrakt klasse, kan vi implementere denne funktionalitet uden overflødig kode.

Alle dyr har en anden type lyd, vaner osv. For eksempel har hund, kat, elefant og snack de alle en anden lyd. Så for dette kan vi have en generisk metode i forældreklasse, gennem hvilken alle andre underklasser eller børneklasser kan levere deres egen specifikke implementering.

I forældreklasse dvs. dyr har vi en generisk abstrakt metode kaldet deres lyd (). Så hver barneklasse skal tilsidesætte denne metode og give deres egen specifikke implementering.

Abstrakt klasse og interface?

  • Abstrakt klasse og interface bruges begge til at opnå abstraktion i java. En abstrakt klasse giver delvis abstraktion, mens interface giver 100% eller komplet abstraktion.
  • Som standard er variabler i en grænseflade endelige. Men abstrakt klasse indeholder også en ikke-endelig variabel. Tilsvarende abstrakt klasse kan også have en statisk, ikke-statisk variabel. Men interface vil kun indeholde en endelig og statisk variabel.
  • Medlemvariabler i en abstrakt klasse kan være som private, offentlige, beskyttede, men de er som standard offentlige i tilfælde af grænsefladen.
  • En abstrakt klasse kan udvide en anden Java-klasse og implementere flere grænseflader, men en grænseflade kan kun udvide en anden grænseflade. En abstrakt klasse kan give en implementering af en grænseflade, men en grænseflade kan ikke gøre det.
  • Vi bruger redskaber og udvider nøgleord til henholdsvis implementering og udvidelse af interface og klasser.
  • Gennem metoden kan vi ændre eller få adgang til de ikke-statiske og ikke-endelige variabler i en abstrakt klasse.

Konklusion

  • Abstrakt klasse bruges til at give delvis abstraktion. En abstrakt klasse kan ikke instantieres ved hjælp af det NYE nøgleord.
  • En abstrakt metode har ingen krop og slutter altid med en semikolon (;).
  • Abstrakt klasse indeholder abstrakte og ikke-abstrakte metoder.
  • Underklasse af en abstrakt superklasse, har brug for at tilvejebringe en implementering af al abstrakt metode, hvis den ikke leverer, skal den erklære sig selv som abstrakt klasse.
  • En underklasse kan være abstrakt, selvom superklassen er konkret.
  • En ikke-abstrakt klasse kan ikke indeholde abstrakte metoder. Den abstrakte metode er også ikke-statisk.
  • Derfor kan vi sige, at abstrakte klasser også indeholder abstrakte og konkrete metoder, så de ikke kan give 100% abstraktion. Det er en proces til at skjule den komplekse logik for slutbrugeren og viser dem kun tjenesterne. En underklasse kan være abstrakt, selvom dens superklasse er konkret, og den kan også bruges som datatype.
  • En abstrakt klasse kan have statiske felter og statiske metoder. Du kan bruge disse statiske medlemmer med en klassehenvisning.

Anbefalede artikler

Dette er en guide til Abstract Class i Java. Her diskuterer vi syntaks og eksempler på abstrakt klasse i Java sammen med abstrakt klasse og interface. Du kan også se på de følgende artikler for at lære mere -

  1. Java-interface vs abstrakt klasse
  2. BoxLayout i Java
  3. Hvad er Java SE?
  4. Hvad er Java-arv?
  5. Hvordan fungerer abstrakt klasse i PHP?
  6. Abstrakt klasse i C ++
  7. Vejledning til statisk metode i PHP
  8. Komplet oversigt over JavaScript-statiske metode

Kategori: