/ / Elementer av Java-objektmodellen: Abstrakt klasse, grensesnitt

Java Object Model Elements: Abstract Class, Interface

Hovedideen til en abstrakt klasse er inneholdt i følgende avhandling: Noen ganger kreves det ikke ferdige klasser, men i en "rå" form. Slike forhåndsinnstillinger kan ikke brukes direkte (instantiert).

java abstrakt klasse

Hva er en abstrakt klasse i Java

La oss se på et annet eksempel.Det er en abstrakt klassekalender i Java i Java.util-pakken. Den implementerer ikke en spesifikk kalender som brukes, for eksempel i Vest- og Øst-Europa, Kina, Nord-Korea, Thailand osv. Men den har mange nyttige funksjoner, for eksempel å legge til flere dager til en bestemt dato: disse funksjonene er kreves for enhver implementering av kalenderen. Du kan ikke gyte en forekomst fra en abstrakt klasse.

Abstrakte klasser, abstrakte Java-metoder

La oss si at du må utvikle flere grafiskeelementer, for eksempel geometriske former: sirkel, rektangel, stjerne osv. Og det er en beholder som tegner dem. Hver komponent har et annet utseende, så den tilsvarende metoden (la oss kalle det maling) er implementert annerledes. Hver komponent har imidlertid mye til felles: figurene må være innskrevet i et rektangel, de kan ha en farge, være synlige og usynlige osv. Det vil si at du må opprette en overordnet klasse for alle disse figurene, der hver komponent vil arve vanlige egenskaper.

abstrakte klasser abstrakte java metoder
Men hva med malingsmetoden?Foreldreklassen har tross alt ingen visuell representasjon. Hvis du erklærer malingsmetoden i hver klasse uavhengig, må du analysere hvilken komponent som behandles, og deretter utføre typekonvertering. Derfor må metoden erklæres abstrakt i overordnet klasse: sett metodens overskrift uten kropp. Og kroppen til hver avledet klasse vil beskrive sin egen. I Java kan en abstrakt klasse pakke inn abstrakte metoder.

Hvis klassen har abstrakte metoder, daklassen er abstrakt. Nøkkelordet abstrakt er plassert foran klasseordet, og også i metodens overskrift. Et semikolon må plasseres etter tittelen på en slik metode. I Java kan ikke en abstrakt klasse instantiere. Hvis vi vil forby opprettelsen av dem, selv om klassen ikke har noen abstrakte metoder, så kan klassen erklæres abstrakt. Men hvis klassen har minst en abstrakt metode, må klassen være abstrakt. Det er umulig for en klasse å være abstrakt, og endelig, og en metode også. Metoden kan ikke være abstrakt, privat, statisk, innfødt. For at arvede klasser skal erklæres ikke-abstrakte og instantiserte, må de implementere alle de abstrakte metodene til foreldrene. Klassen selv kan bruke sine abstrakte metoder.

Et eksempel:

  • abstrakt klasse AC-klasse {
  • offentlig abstrakt ugyldig metode (int a);
  • }
  • klasse BClass utvider AClass {
  • offentlig annulleringsmetode (int a) {
  • // kropp
  • }

Variabler av typen abstrakt klasse er tillatt. De kan referere til en ikke-abstrakt etterkommer av denne klassen eller være null.

Java-grensesnitt - et alternativ til flere arv

java-grensesnitt og abstrakte klasser

Det er ingen flere arv i Java, for da oppstår det visse problemer. En klasse kan ikke arve fra flere klasser. Men det kan implementere flere grensesnitt.

Java-grensesnitt og abstrakte klasser - konsepterlignende, men ikke det samme. Grensesnittet kan deklareres som offentlig, så er det tilgjengelig for alle, eller du kan utelate det offentlige modifikatoren, så er grensesnittet bare tilgjengelig i pakken. Det abstrakte nøkkelordet er ikke nødvendig fordi grensesnittet allerede er abstrakt, men du kan spesifisere det.

Grensesnitterklæring

forskjell mellom abstrakt klasse og java-grensesnitt

Det starter med en tittel og kan gå førstdet offentlige nøkkelordet etterfulgt av grensesnittordet. Da strekker ordet seg og en oppregning av grensesnittene som den gitte arves fra, kan komme. Gjentakelser er ikke tillatt her, og det er også umulig for arveforholdet å danne en sirkulær avhengighet. Så kommer kroppen til grensesnittet, lukket i krøllete bukseseler. Elementer er erklært i hoveddelen av grensesnittet: konstante felt og abstrakte metoder. Alle felt er offentlige endelige statiske - alle disse modifikatorene er valgfrie. Alle metoder betraktes som offentlige abstrakte - disse modifikatorene kan også spesifiseres. Nå er det sagt nok om forskjellen mellom en abstrakt klasse og et Java-grensesnitt.

  • offentlig grensesnitt AI utvider B, C, D {
  • // kropp
  • }

For å erklære en klasse som arver fra et grensesnitt, bruk implementeringsnøkkelordet:

  • klasse ACklass implementerer BI, CI, DI {}

Det vil si at hvis et grensesnittnavn er spesifisert etter implementeringer i en klassedeklarasjon, implementerer klassen det. Arvinger av denne klassen arver elementene, så de implementerer det også.

Grensesnittvariabler er også tillatt.De kan referere til typen klasse som implementerer dette grensesnittet, eller null. Slike variabler har alle elementene i Object-klassen, fordi objekter er avledet fra klasser, og de er i sin tur arvet fra Object-klassen.

I denne artikkelen så vi på noen av elementene i Java-objektmodellen - abstrakte klasser, abstrakte metoder, grensesnitt.