Vad är abstrakt klass i Java?

  • Abstrakta klasser är som alla andra vanliga klasser i java. Den största skillnaden mellan abstrakt klass och normal klass är att skapa den abstrakta klassen som vi behöver för att använda nyckelordet 'ABSTARCT'. Det är en åtskillnad av klassimplementering.
  • De brukade definiera de mycket vanliga funktionerna i dess underklasser. En sådan typ av klass refereras till som abstrakt klass.
  • Det viktigaste att vi inte kan skapa ett objekt av en abstrakt klass.
  • Abstrakta klasser kan innehålla såväl abstrakta som icke-abstrakta metoder. De kan inte innehålla en grupp av den abstrakta metoden, som endast kan tillhandahållas av underklassen. Om underklassen inte tillhandahåller implementeringen av den abstrakta metoden, måste vi göra den ABSTRAKT uttryckligen.
  • Med andra ord, om en klass innehåller en abstrakt metod måste den definiera sig själv som ABSTARCT.
  • Genom att använda abstrakta klasser kan vi gruppera flera java-klasser tillsammans, det optimerar också koden och gör koden mer läsbar och minskar redundansen. Det ger också en mall för framtida klasser.

Syntax of Abstract Class i Java

Hur fungerar abstrakt klass i Java?

  • En abstrakt klass har en abstrakt metod och icke-abstrakt metod, dvs. abstrakt metod utan kropp och de kan ha metoder med implementering också.
  • En abstrakt klass används för att tillhandahålla det vanligaste inslaget som är specifikt för olika klasser. Underklasser kan tillhandahålla en annan implementering av de abstrakta metoderna beroende på deras behov eller krav.
  • Vi kan inte skapa ett objekt av en abstrakt klass med den "nya" operatören, men vi kan fortfarande definiera dess konstruktör som endast kan åberopas i konstruktorn i dess underklass. Underklasskonstruktör har åtkomst till en superklasskonstruktör för att initialisera sin variabel som kan användas i underklassen för ytterligare krav.

Exempel på abstrakt klass 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 exemplet ovan har vi HUMAN som en abstrakt klass som definierar en människas vanliga behov, gillar och ogillar. Det finns olika typer av människor med olika gillar och ogillar. Så varje människa kan tillhandahålla en specifik implementering av vad de vill. Det kommer att vara specifikt för dem.

Den huvudsakliga fördelen med abstrakt klass är att vi har en specifik implementering av metoder enligt ett krav som också leder till minskad redundans, ökar kodbarhetens läsbarhet, döljer implementeringen av metoder och därmed ger delvis abstraktion.

Vi kan ha ytterligare ett exempel för att förstå när vi ska använda abstrakt klasser.

  • Vi bör använda abstrakt klass när vi vill dela gemensam funktionalitet mellan olika klasser med specifik implementering.
  • I abstrakta klasser bör fält inte vara statiska och slutliga, vi kan också ha konkreta metoder som definieras som privata, offentliga och skyddade.

Låt oss säga att vi har en djurklass. Det finns sorter av djur vi har på jorden och de skiljer sig alla från varandra i någon eller större mening. Det kommer att innehålla alla gemensamma funktioner för alla.

Nu kan denna djurklass inte ha metoder som är specifika för varje djur. Så med konceptet abstrakt klass kan vi implementera denna funktion utan redundant kod.

Alla djur har en annan typ av ljud, vanor, etc. Till exempel hund, katt, elefant och mellanmål har de alla ett annat ljud. Så för detta kan vi ha en generisk metod i förälderklassen genom vilken alla andra underklasser eller barnklass kan tillhandahålla ett eget specifikt genomförande.

I förälderklassen, djur, har vi en generisk abstrakt metod som kallas deras ljud (). Så varje barnklass måste åsidosätta denna metod och tillhandahålla sin egen specifika implementering.

Abstrakt klass och gränssnitt?

  • Abstrakt klass och gränssnitt båda används för att uppnå abstraktion i java. En abstrakt klass ger delvis abstraktion medan gränssnitt ger 100% eller fullständig abstraktion.
  • Som standard är variabler i ett gränssnitt slutgiltiga. Men abstrakt klass innehåller en icke-slutlig variabel också. På liknande sätt kan abstrakt klass också ha en statisk, icke-statisk variabel. Men gränssnittet kommer endast att innehålla en slutlig och statisk variabel.
  • Medlemsvariabler i en abstrakt klass kan vara som privata, offentliga, skyddade, men de är som standard offentliga i fallet med gränssnittet.
  • En abstrakt klass kan utöka en annan Java-klass och implementera flera gränssnitt, men ett gränssnitt kan bara utöka ett annat gränssnitt. En abstrakt klass kan tillhandahålla en implementering av ett gränssnitt men ett gränssnitt kan inte göra det.
  • Vi använder redskap och utökar nyckelord för att implementera och utöka gränssnitt respektive klasser.
  • Genom metod kan vi modifiera eller komma åt de icke-statiska och icke-slutliga variablerna i en abstrakt klass.

Slutsats

  • Abstrakt klass används för att ge delvis abstraktion. Det går inte att instansera en abstrakt klass med det NYA nyckelordet.
  • En abstrakt metod har ingen kropp och slutar alltid med en semikolon (;).
  • Abstrakt klass innehåller abstrakta och icke-abstrakta metoder.
  • Underklass av en abstrakt superklass, måste tillhandahålla en implementering av all abstrakt metod om den inte tillhandahåller måste den förklara sig själv som abstrakt klass.
  • En underklass kan vara abstrakt även om superklassen är konkret.
  • En icke-abstrakt klass kan inte innehålla abstrakta metoder. Den abstrakta metoden är också icke-statisk.
  • Därför kan vi säga att abstrakta klasser innehåller abstrakta och konkreta metoder så att de inte kan ge 100% abstraktion. Det är en process att dölja den komplicerade logiken från slutanvändaren och visar dem bara tjänsterna. En underklass kan vara abstrakt även om dess superklass är konkret, och den kan också användas som datatyp.
  • En abstrakt klass kan ha statiska fält och statiska metoder. Du kan använda dessa statiska medlemmar med en klassreferens.

Rekommenderade artiklar

Detta är en guide till Abstract Class i Java. Här diskuterar vi syntax och exempel på abstrakt klass i Java tillsammans med abstrakt klass och gränssnitt. Du kan också titta på följande artiklar för att lära dig mer -

  1. Java-gränssnitt kontra abstrakt klass
  2. BoxLayout i Java
  3. Vad är Java SE?
  4. Vad är Java-arv?
  5. Hur fungerar Abstract Class i PHP?
  6. Abstrakt klass i C ++
  7. Guide till statisk metod i PHP
  8. Komplett översikt över JavaScript-statisk metod

Kategori: