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 | ||||||
---|---|---|---|---|---|---|
| ||||||
|
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 | ||||||
---|---|---|---|---|---|---|
| ||||||
|
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 | ||||||
---|---|---|---|---|---|---|
| ||||||
|
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 | ||||||
---|---|---|---|---|---|---|
| ||||||
|
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