En komplet introduktion til abstrakte klasser i Java



Denne artikel hjælper dig med en detaljeret tilgang til abstrakte klasser i Java sammen med eksempler til at forstå konceptet på en meget bedre måde.

Abstrakte klasser i hjælpe brugerne med at opnå abstraktion, som er den mest afgørende objektorienterede programmeringspraksis, der følges under processen med softwaredesign. I denne artikel vil vi diskutere terminologien for abstrakte klasser gennem følgende docket.

Hvad er abstrakte klasser i Java?

Abstrakte klasser i fungere som en grænse mellem implementeringsmetoden og dens funktionalitet. Det bruges til at udveksle funktionaliteten mellem Beton klassemedlemmer og Abstrakt Klasse.





Abstract-Classes-in-Java-Edureka

Abstrakte klasser betragtes som de klasser, der skjuler Metode Implementering detaljer fra brugeren og viser kun Metode Funktionalitet. De erklæres ved hjælp af nøgleordet abstrakt . Disse metoder kan omfatte Abstrakt og Ikke-abstrakt metoder i dem.

parse xml-fil i java

Hvorfor har vi brug for abstrakte klasser i Java?

Vi har brug for abstrakte klasser i Java af følgende grunde:



  • Abstrakt undervisning understøtter Dynamisk metodeopløsning i løbetid
  • De hjælper brugerne med at opnå Løs kobling
  • Abstrakte klasser adskiller Metodedefinition fra de arvede Underklasser
  • De giver den Standardfunktionalitet af den definerede metode for alle underklasser
  • Abstrakte klasser giver en Skabelon til fremtidige specifikke klasser
  • Den abstrakte klasse tillader det Kode Genanvendelighed

Regler for brug af abstrakte klasser i Java

For at implementere en abstrakt klasse i Java skal vi følge reglerne som beskrevet nedenfor:



  • En abstrakt klasse skal erklæres ved hjælp af abstrakt nøgleord.
  • Abstrakte klasser kan omfatte abstrakt og ikke-abstrakt metoder.
  • En abstrakt klasse kan ikke være instantieret.
  • De kan inkludere konstruktører og statisk metoder.
  • En abstrakt klasse inkluderer endelig metoder.

Måder at opnå abstraktion i Java

Processen med abstraktion i Java kan opnås ved hjælp af følgende to metoder som nævnt nedenfor:

hvad er en nøglefejl i python
  1. Implementering af en abstrakt klasse
  2. Implementering af et interface

Syntaksen for abstrakte klasser

Syntaksen til definition af abstrakte klasser og abstrakte metoder er som følger:

abstrakt klasse Edureka {}
abstrakt klasse Metode ()

Praktiske eksempler på abstrakte klasser

// Abstrakt klasse

pakke Abstrakt offentlig abstrakt klasse Person {privat String navn privat String køn offentlig person (String nm, String gen) {this.name = nm this.gender = gen} offentlig abstrakt ugyldigt Studerende () @ Overstyr offentlig String toString () {return ' Navn = '+ dette.navn +' :: Køn = '+ dette.gender}}

// Studenterklasse

pakke Abstrakt offentlig klasse Student udvider Person {privat int StudentID offentlig student (String nm, String gen, int id) {super (nm, gen) this.StudentID = id} @ Overstyr offentlig tomrum Studerer () {if (StudentID == 0 ) {System.out.println ('Not Studing')} ellers {System.out.println ('Forfølger en grad i Bachelor of Engineering')}} offentlig statisk ugyldig main (String args []) {Personstudent = ny studerende ('Priya', 'Kvinde', 0) Personstudent1 = ny studerende ('Karan', 'Mand', 201021) Personstudent2 = ny studerende ('Kumari', 'Kvinde', 101021) Personstudent3 = ny studerende (' John ',' Mand ', 201661) student.Studying () student1.Studying () student2.Studying () student3.Studying () System.out.println (student.toString ()) System.out.println (student1.toString ()) System.out.println (student2.toString ()) System.out.println (student3.toString ())}}

Produktion:

Studerer ikke
Forfølger en grad i Bachelor of Engineering
Forfølger en grad i Bachelor of Engineering
Forfølger en grad i Bachelor of Engineering
Navn = Priya :: Køn = Kvinde
Navn = Karan :: Køn = Mand
Navn = Kumari :: Køn = Kvinde
Navn = John :: Køn = Mand

Forskel mellem interface og abstrakt klasse

Interface Abstrakt klasse
Kan kun have abstrakte metoderKan have abstrakte og ikke-abstrakte metoder
Den har kun endelige variablerDet inkluderer ikke-endelige variabler
Den har kun statiske og endelige variablerDet har statiske, ikke-statiske, endelige, ikke-endelige variabler
Implementerer ikke abstraktklassenKan implementere et interface
Implementeret ved hjælp af 'implementerer' KeywordImplementeret ved hjælp af 'udvider' nøgleord
Kan kun udvide et interfaceKan udvide Java-klasser og grænseflader
Medlemmer er som standard offentligeMedlemmer kan være private og beskyttede

// Abstrakt klasseeksempel

pakke abstactVSinterface abstrakt klasse Shape {String objectName = '' Shape (String name) {this.objectName = name} abstract public double area () abstract public void draw ()} class Rectangle extends Shape {int længde, bredde Rektangel (int længde, int bredde, String navn) {super (navn) this.length = længde this.width = width} @ Override public void draw () {System.out.println ('Rectangle is drawn')} @ Override public double area () {retur (dobbelt) (længde * bredde)}} klasse Cirkel udvides figur {dobbelt pi = 3,14 int radius Cirkel (int radius, String navn) {super (navn) this.radius = radius} @ Overstyr offentlig ugyldig tegning () { System.out.println ('Cirkel er tegnet')} @ Override offentligt dobbeltområde () {return (dobbelt) ((pi * radius * radius) / 2)}} klasse Edureka {offentlig statisk ugyldig hoved (String [] args ) {Shape rect = new Rectangle (20, 30, 'Rectangle') System.out.println ('Area of ​​rectangle:' + rect.area ()) Shape circle = new Circle (20, 'Cicle') System.out .println ('Cirkelareal er:' + cirkel.area ())}}

Produktion:

Areal af rektangel: 600,0
Cirkelareal er: 628.0

// Eksempel på interface

pakke absVSint-interface Form {ugyldig tegning () dobbelt areal ()} klasse Rektangel implementerer figur {int længde, bredde Rektangel (int længde, int bredde) {this.length = længde this.width = bredde} @ Overstyr offentlig tom tegning () {System.out.println ('Rektangel er tegnet')} @ Override offentligt dobbeltområde () {return (dobbelt) (længde * bredde)}} klasse Cirkelværktøjer Form {dobbelt pi = 3,14 int radius Cirkel (int radius) {this.radius = radius} @Override public void draw () {System.out.println ('Circle has been drawn')} @Override public double area () {return (double) ((pi * radius * radius) / 2)}} klasse Edureka {public static void main (String [] args) {Shape rect = new Rectangle (20, 30) System.out.println ('Area of ​​rectangle:' + rect.area ()) Shape circle = ny cirkel (20) System.out.println ('Område af cirkel:' + cirkel.area ())}}

Produktion:

Areal af rektangel: 600,0
Cirkelområde: 628.0

Med dette kommer vi til slutningen af ​​denne artikel. Jeg håber du har forstået vigtigheden af ​​abstraktion, syntaks, funktionalitet, regler for abstraktion i Java og praktiske eksempler relateret til dem.

Nu hvor du har forstået det grundlæggende i Java, skal du tjekke af Edureka, et pålideligt online læringsfirma med et netværk på mere end 250.000 tilfredse elever spredt over hele kloden. Edurekas Java J2EE- og SOA-uddannelses- og certificeringskursus er designet til studerende og fagfolk, der ønsker at være Java-udvikler. Kurset er designet til at give dig et forspring i Java-programmering og træne dig til både kerne- og avancerede Java-koncepter sammen med forskellige Java-rammer som Hibernate & Forår .

Har du et spørgsmål til os? Nævn det i kommentarfeltet i denne 'Abstrakte klasser i Java' -blog, og vi vender tilbage til dig hurtigst muligt.

hvad er jit i java