En komplett introduksjon til abstrakte klasser i Java



Denne artikkelen vil hjelpe deg med en detaljert tilnærming til abstrakte klasser i Java sammen med eksempler for å forstå konseptet på en mye bedre måte.

Abstrakte klasser i hjelpe brukerne med å oppnå abstraksjon, som er den mest avgjørende objektorienterte programmeringspraksisen som følges under prosessen med programvaredesign. I denne artikkelen skal vi diskutere terminologien til abstrakte klasser gjennom følgende docket.

Hva er abstrakte klasser i Java?

Abstrakte klasser i fungere som en grense mellom implementeringsmetoden og dens funksjonalitet. Den brukes til å utveksle funksjonaliteten mellom Betong klassemedlemmer og Abstrakt Klasse.





Abstract-Classes-in-Java-Edureka

Abstrakte klasser betraktes som de klassene som skjuler Metode Implementering detaljer fra brukeren og viser bare Metode Funksjonalitet. De blir erklært ved hjelp av nøkkelordet abstrakt . Disse metodene kan inkludere Abstrakt og Ikke-abstrakt metoder i dem.

hvordan du skriver varsel i javascript

Hvorfor trenger vi abstrakte klasser i Java?

Vi trenger abstrakte klasser i Java av følgende grunner:



  • Støtte for abstrakte klasser Dynamisk metodeoppløsning i kjøretid
  • De hjelper brukere å oppnå Løs kobling
  • Abstrakte klasser skiller Metodedefinisjon fra de arvede Underklasser
  • De gir Standard funksjonalitet av den definerte metoden for alle underklasser
  • Abstrakte klasser gir en Mal for fremtidige spesifikke klasser
  • Den abstrakte klassen tillater det Kode Gjenbrukbarhet

Regler for bruk av abstrakte klasser i Java

For å implementere en abstrakt klasse i Java, må vi følge reglene som beskrevet nedenfor:



  • En abstrakt klasse må erklæres ved hjelp av abstrakt nøkkelord.
  • Abstrakte klasser kan inkludere abstrakt og ikke-abstrakt metoder.
  • En abstrakt klasse kan ikke være instansert.
  • De kan inkludere konstruktører og statisk metoder.
  • En abstrakt klasse inkluderer endelig metoder.

Måter å oppnå abstraksjon på Java

Prosessen med abstraksjon i Java kan oppnås ved følgende to metoder som nevnt nedenfor:

  1. Implementering av en abstrakt klasse
  2. Implementere et grensesnitt

Syntaksen for abstrakte klasser

Syntaksen for å definere 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 kjønn offentlig person (String nm, String gen) {this.name = nm this.gender = gen} offentlig abstrakt ugyldig Studier () @ Overstyr offentlig String toString () {return ' Name = '+ this.name +' :: Gender = '+ this.gender}}

// Studentklasse

c ++ hopp til linje
pakke Abstrakt offentlig klasse Student utvider Person {privat int StudentID offentlig Student (String nm, String gen, int id) {super (nm, gen) this.StudentID = id} @ Overstyr offentlig tomrom Studerer () {if (StudentID == 0 ) {System.out.println ('Not Studying')} else {System.out.println ('Pursuing a Degree in Bachelor of Engineering')}} public static void main (String args []) {Person student = ny student ('Priya', 'Kvinne', 0) Person student1 = ny student ('Karan', 'Mann', 201021) Person student2 = ny student ('Kumari', 'Kvinne', 101021) Person student3 = ny student (' John ',' Mann ', 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 ())}}

Produksjon:

Studerer ikke
Fortsetter en grad i Bachelor of Engineering
Fortsetter en grad i Bachelor of Engineering
Fortsetter en grad i Bachelor of Engineering
Navn = Priya :: Kjønn = Kvinne
Navn = Karan :: Kjønn = Mann
Navn = Kumari :: Kjønn = Kvinne
Navn = John :: Kjønn = Mann

Forskjellen mellom grensesnitt og abstrakt klasse

Grensesnitt Abstrakt klasse
Kan bare ha abstrakte metoderKan ha abstrakte og ikke-abstrakte metoder
Den har bare endelige variablerDen inkluderer ikke-endelige variabler
Den har bare statiske og endelige variablerDen har statiske, ikke-statiske, endelige, ikke-endelige variabler
Vil ikke implementere abstraktklassenKan implementere et grensesnitt
Implementert ved hjelp av 'implementerer' KeywordImplementert ved hjelp av 'utvider' søkeord
Kan bare utvide et grensesnittKan utvide Java-klasser og grensesnitt
Medlemmer er offentlige som standardMedlemmer kan være private og beskyttet

// 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 extensions Shape {int length, width Rectangle (int length, int bredde, strengnavn) {super (navn) this.length = lengde this.width = width} @ Override public void draw () {System.out.println ('Rectangle is drawn')} @ Override public double area () {retur (dobbel) (lengde * bredde)}} klasse Sirkel strekker seg Form {dobbel pi = 3,14 int radius Sirkel (int radius, strengnavn) {super (navn) this.radius = radius} @ Overstyr offentlig tom tegning () { System.out.println ('Circle is drawn')} @ Override public double area () {return (double) ((pi * radius * radius) / 2)}} class Edureka {public static void main (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 ('Sirkelområdet er:' + sirkel.area ())}}

Produksjon:

Areal av rektangel: 600,0
Sirkelområdet er: 628.0

// Grensesnitteksempel

pakke absVSint-grensesnitt Form {ugyldig tegning () dobbelt område ()} klasse Rektangel implementerer Form {int lengde, bredde Rektangel (int lengde, int bredde) {this.length = lengde this.width = bredde} @ Overstyr offentlig tom tegning () {System.out.println ('Rektangel er tegnet')} @ Overstyr offentlig dobbeltområde () {retur (dobbelt) (lengde * bredde)}} klasse Sirkelimplement Form {dobbelt pi = 3,14 int radius Sirkel (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 sirkel (20) System.out.println ('Område av sirkel:' + sirkel.område ())}}

Produksjon:

binært søkeprogram i java

Areal av rektangel: 600,0
Område av sirkel: 628.0

Med dette kommer vi til en slutt på denne artikkelen. Jeg håper du har forstått viktigheten av abstraksjon, syntaks, funksjonalitet, regler for abstraksjon i Java og praktiske eksempler relatert til dem.

Nå som du har forstått det grunnleggende om Java, sjekk ut av Edureka, et pålitelig online læringsfirma med et nettverk med mer enn 250 000 fornøyde elever spredt over hele verden. Edurekas Java J2EE- og SOA-opplæring og sertifiseringskurs er designet for studenter og fagpersoner som ønsker å være Java-utvikler. Kurset er designet for å gi deg et forsprang i Java-programmering og trene deg for både kjerne- og avanserte Java-konsepter sammen med forskjellige Java-rammer som Hibernate & Vår .

Har du spørsmål til oss? Nevn det i kommentarfeltet i denne 'Abstrakte klasser i Java' -bloggen, så kommer vi tilbake til deg så snart som mulig.