toegangsniveau-modifiers bepalen of andere klassen een bepaald veld kunnen gebruiken of een bepaalde methode kunnen aanroepen. Er zijn twee niveaus van toegangscontrole:
- op het hoogste niveau –
public
, of package-private (geen expliciete modifier). - op het niveau van de leden –
public
,private
,protected
, of Package-private (geen expliciete modifier).,
Een klasse kan gedeclareerd worden met de modifier public
, in welk geval die klasse overal zichtbaar is voor alle klassen. Als een klasse geen modifier heeft (de standaard, ook bekend als package-private), is het alleen zichtbaar binnen zijn eigen pakket (pakketten worden groepen van verwante klassen genoemd je zult er in een latere les over leren.)
op het niveau van de leden kunt u ook de public
modifier of geen modifier (package-private) gebruiken, net als bij top-level klassen, en met dezelfde betekenis., Voor leden zijn er twee extra access modifiers: private
en protected
. Deprivate
modifier geeft aan dat het lid alleen toegankelijk is in zijn eigen klasse. Deprotected
modifier specificeert dat het lid alleen kan worden benaderd binnen zijn eigen pakket (zoals met package-private) en, bovendien, door een subklasse van zijn klasse in een ander pakket.
de volgende tabel toont de toegang tot leden die door elke modifier zijn toegestaan.,Modifier
public
protected
private
The first data column indicates whether the class itself has access to the member defined by the access level., Zoals je kunt zien, heeft een klas altijd toegang tot zijn eigen leden. De tweede kolom geeft aan of klassen in hetzelfde pakket als de klasse (ongeacht hun afkomst) toegang hebben tot het lid. De derde kolom geeft aan of subklassen van de buiten dit pakket gedeclareerde klasse toegang hebben tot het lid. De vierde kolom geeft aan of alle klassen toegang hebben tot het lid.
toegangsniveaus beïnvloeden u op twee manieren., Ten eerste, wanneer je klassen gebruikt die afkomstig zijn van een andere bron, zoals de klassen in het Java platform, bepalen toegangsniveaus welke leden van die klassen je eigen klassen kunnen gebruiken. Ten tweede, wanneer je een class schrijft, moet je beslissen welk toegangsniveau elke ledenvariabele en elke methode in je class zou moeten hebben.
laten we eens kijken naar een verzameling klassen en zien hoe toegangsniveaus de zichtbaarheid beïnvloeden. De volgende figuur toont de vier klassen in dit voorbeeld en hoe ze zijn gerelateerd.,
Classes and Packages of the Example Used to Illustrate Access Levels
de volgende tabel laat zien waar de leden van de Alpha class zichtbaar zijn voor elk van de access modifiers die daarop kunnen worden toegepast.,ha
public
protected
private
If other programmers use your class, you want to ensure that errors from misuse cannot happen., Toegangsniveaus kunnen u hierbij helpen.
- gebruik het meest beperkende toegangsniveau dat zinvol is voor een bepaald lid. Gebruik
private
tenzij u een goede reden hebt om dat niet te doen. - vermijd
public
velden behalve constanten. (Veel van de voorbeelden in de tutorial gebruiken publieke velden. Dit kan helpen om een aantal punten beknopt te illustreren, maar wordt niet aanbevolen voor productiecode.) Publieke velden hebben de neiging om u te koppelen aan een bepaalde implementatie en beperken uw flexibiliteit in het veranderen van uw code.