Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

I java finnes det flere synlighetsmodifikatorer som gir mulighet til å styre "tilgangen" til klasser, variabler, metoder og konstruktører. For mer om hvorfor vi ønsker å styre denne "tilgangen", se Innkapsling.

Vi har fire nivåer for tilgjengelighet:

  • Synlig i pakken (package) er standardverdi og trenger ingen modifikator
  • Synlig kun i klassen, private
  • Synlig for alle, public
  • Synlig i pakken og for subklasser, protected

Defaut

Dersom man deklarerer et felt, en metode etc. uten synlighetsmodifikator, tildeles standardverdien. Dette gjør ressursen tilgjengelig for alle klasser som ligger i samme package.

Code Block
languagejava
titleDefault modifier
linenumberstrue
 


Private

Dersom man deklarerer et felt, en metode etc. som private, er det kun mulig å hente/forandre/kalle på denne ressursen direkte i klassen.
Merk at verdiene til private felt fortsatt kan hentes gjennom en getter eller forandres med en setter

Code Block
languagejava
titlePrivate modifier
linenumberstrue
 


Public 

Dersom man deklarerer et felt, en metode etc. som public, er det mulig for alle som vet om ressursen å hente/forandre/kalle på den.

Code Block
languagejava
titlePublic modifier
linenumberstrue
 

 

Protected

Dersom man deklarerer et felt, en metode etc. som protected, er det mulig å hente/forandre/kalle på den dersom kallet kommer fra samme package eller fra en subklasse av klassen hvor ressursen er definert.
 

Code Block
languagejava
titleProtected modifier
linenumberstrue
 


Synlighet ved arv

Det finnes i java et sett med regler for synlighet ved arv

  • Metoder som deklareres som public i superklassen, må også være public i subklasser
  • Metoder som deklareres som protected i en superklasse må enten være protected eller public i subklasser; det er ikke mulig å redusere synlighet til private.

  • Metoder deklarert uten synlighetsmodifikator (default) kan deklareres mer skjult i subklasser

  • Metoder som deklareres private arves ikke i det hele tatt, så det er ingen regler for disse.


DENNE SIDEN ER UNDER UTVIKLING