Hva er abstrakt klasse i Java?

  • Abstrakte klasser er som alle andre normale klasser i java. Den største forskjellen mellom abstrakt klasse og normal klasse er å lage den abstrakte klassen vi trenger for å bruke 'ABSTARCT' nøkkelordet. Det er en separasjon av klassens implementering.
  • De pleide å definere de helt vanlige trekkene i underklasser. En slik type klasse ble referert til som Abstrakt klasse.
  • Viktigst kan vi ikke lage et objekt av en abstrakt klasse.
  • Abstrakte klasser kan inneholde abstrakte så vel som ikke-abstrakte metoder. De kan ikke inneholde et organ av den abstrakte metoden, som bare kan leveres av underklassen. Hvis underklassen ikke gir implementering av den abstrakte metoden, må vi gjøre den ABSTRAKT eksplisitt.
  • Med andre ord, hvis en klasse inneholder en abstrakt metode, må den definere seg selv som ABSTARCT.
  • Ved å bruke abstrakte klasser kan vi gruppere flere java-klasser sammen, og optimaliserer også koden og gjør koden mer lesbar og reduserer overflødighet. Den gir også en mal for 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 uten kropp, og de kan ha metoder med implementering også.
  • En abstrakt klasse brukes for å gi det vanligste trekket som er spesifikt for forskjellige klasser. Underklasser kan gi en annen implementering av de abstrakte metodene i henhold til deres behov eller krav.
  • Vi kan ikke lage et objekt av en abstrakt klasse ved å bruke den 'nye' operatøren, men vi kan fremdeles definere konstruktøren som bare kan påberopes i konstruktøren til underklassen. Underklasse-konstruktør kan få tilgang til en superklasse-konstruktør for å initialisere variabelen som kan brukes i underklassen for ytterligere behov.

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

Produksjon:

I eksemplet over har vi MENNESK som en abstrakt klasse som definerer et menneskes vanlige behov, liker og misliker. Det er forskjellige typer mennesker med forskjellige likes og misliker. Så hvert menneske kan gi en spesifikk implementering av det de liker. Dette vil bare være spesifikt for dem.

Hovedfordelen med abstrakt klasse er at vi har en spesifikk implementering av metoder i henhold til et krav som også fører til redusert redundans, øker lesbarheten til kode, skjuler implementeringen av metoder og dermed gir delvis abstraksjon.

Vi kan ha et eksempel til å forstå når vi skal bruke abstrakte klasser.

  • Vi bør bruke abstrakt klasse når vi ønsker å dele felles funksjonalitet mellom forskjellige klasser med spesifikk implementering.
  • I abstrakte klasser skal felt ikke være statiske og endelige, vi kan også ha konkrete metoder definere som private, offentlige og beskyttede.

La oss si at vi har en dyreklasse. Det er varianter av dyr vi har på jorden, og de er forskjellige fra hverandre i en eller annen forstand. Den vil inneholde alle fellestrekkene til alle.

Nå kan ikke denne dyreklassen ha metoder som er spesifikke for hvert dyr. Så med begrepet abstrakt klasse, kan vi implementere denne funksjonaliteten uten overflødig kode.

Alle dyr har en annen type lyd, vaner, etc. For eksempel hund, katt, elefant og matbit har de alle en annen lyd. Så for dette kan vi ha en generisk metode i foreldreklasse der alle andre underklasser eller barneklasser kan gi sin egen spesifikke implementering.

I foreldreklasse, dvs. dyr, har vi en generisk abstrakt metode som kalles deres lyd (). Så hver barneklasse må overstyre denne metoden og gi sin egen spesifikke implementering.

Abstrakt klasse og grensesnitt?

  • Abstrakt klasse og grensesnitt begge brukes for å oppnå abstraksjon i java. En abstrakt klasse gir delvis abstraksjon mens grensesnitt gir 100% eller fullstendig abstraksjon.
  • Som standard er variabler i et grensesnitt endelige. Men abstrakt klasse inneholder også en ikke-endelig variabel. Tilsvarende abstrakt klasse kan også ha en statisk, ikke-statisk variabel. Men grensesnitt vil bare inneholde en endelig og statisk variabel.
  • Medlemsvariabler i en abstrakt klasse kan være som private, offentlige, beskyttede, men de er som standard offentlige i tilfelle grensesnittet.
  • En abstrakt klasse kan utvide en annen Java-klasse og implementere flere grensesnitt, men ett grensesnitt kan bare utvide et annet grensesnitt. En abstrakt klasse kan gi en implementering av et grensesnitt, men et grensesnitt kan ikke gjøre det.
  • Vi bruker redskaper og utvider søkeord for å implementere og utvide henholdsvis grensesnitt og klasser.
  • Gjennom metoden kan vi modifisere eller få tilgang til de ikke-statiske og ikke-endelige variablene i en abstrakt klasse.

Konklusjon

  • Abstrakt klasse brukes til å gi delvis abstraksjon. En abstrakt klasse kan ikke oppstartes ved hjelp av det NYE nøkkelordet.
  • En abstrakt metode har ingen kropp og ender alltid med en semikolon (;).
  • Abstrakt klasse inneholder abstrakte og ikke-abstrakte metoder.
  • Underklasse av en abstrakt superklasse, trenger å gi en implementering av all abstrakt metode hvis den ikke gir, må den erklære seg selv som abstrakt klasse.
  • En underklasse kan være abstrakt selv om superklassen er konkret.
  • En ikke-abstrakt klasse kan ikke inneholde abstrakte metoder. Dessuten er den abstrakte metoden ikke-statisk.
  • Derfor kan vi si at abstrakte klasser også inneholder abstrakte og konkrete metoder, slik at de ikke kan gi 100% abstraksjon. Det er en prosess for å skjule den kompliserte logikken for sluttbrukeren og viser dem bare tjenestene. En underklasse kan være abstrakt selv om superklassen er konkret, og den kan også brukes som datatype.
  • En abstrakt klasse kan ha statiske felt og statiske metoder. Du kan bruke disse statiske medlemmene med en klassehenvisning.

Anbefalte 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 grensesnitt. Du kan også se på følgende artikler for å lære mer -

  1. Java-grensesnitt vs abstrakt klasse
  2. BoxLayout i Java
  3. Hva er Java SE?
  4. Hva er Java arv?
  5. Hvordan fungerer abstrakt klasse i PHP?
  6. Abstrakt klasse i C ++
  7. Veiledning for statisk metode i PHP
  8. Komplett oversikt over JavaScript-statiske metoden