Video: Coding in the Cabana 1: Maurer Rose 2024
Naarmate uw Java-toepassingen complexer worden, wordt de noodzaak om de scope te beschouwen steeds belangrijker. belangrijkste reden is dat u onbedoeld een bug in uw toepassing kunt introduceren door scopingregels niet te volgen.
Dit kan het gevolg zijn van een veld of een ander lid dat verkeerd wordt gebruikt door de toepassing (zoals het toevoegen van een onjuiste gegevenswaarde of toegang tot een methode bij de verkeerde tijd of met onjuiste gegevens). Bovendien kan onjuiste scoping de deur openlaten voor buitenstaanders om op onvoorziene manieren (zoals een virus) met uw applicatie te communiceren.
Het standaardbereik treedt op wanneer u niet specifiek een bereik toewijst aan een klasse-element.Omdat veel Java-ontwikkelaars geen idee hebben wat het standaardbereik voor sommige elementen is (en wanneer een standaardscope wordt gebruikt, betekent dit dat uw code niet is gedocumenteerd), wordt niet vaak gebruikt.
Toch heeft u het nodig o weet wat de standaardscope is voor verschillende elementen omdat sommige Java-ontwikkelaars erop vertrouwen. Voordat u de standaardscope kunt begrijpen, moet u echter rekening houden met zichtbaarheid : de maat van de toepassingselementen die een lid kunnen zien. Java biedt de volgende zichtbaarheidsniveaus (in de algemene volgorde van inkapseling):
-
Pakket: De container die wordt gebruikt om een aantal klassen te houden. Als u met een eenvoudige directorystructuur werkt, zoals de voorbeelden in dit boek, is het pakket een map met een aantal. klasse bestanden.
-
Klasse: Een klas zit meestal in een single. java-bestand dat u compileert in een. klassenbestand. Het bevat één klasseverklaring.
-
Methode: Een element kan zich in de klasse bevinden of als onderdeel van een methode. De methode fungeert als een container om het element vast te houden.
-
Blok: Een element kan zich binnen een codeblok bevinden, zoals een for-lus.
Scope hangt gedeeltelijk af van de locatie die wordt gebruikt om een element te declareren. Een variabele die is gedefinieerd binnen een blok (zoals een for-lus) is bijvoorbeeld alleen zichtbaar binnen dat blok. Wanneer u de variabele buiten het blok probeert te gebruiken, geeft Java een uitzondering weer. Rekening houdend met de zichtbaarheid, beschrijft deze tabel de verschillende niveaus van bereik binnen de Java-omgeving.
Zichtbaarheid | privé | (standaard) | beveiligd | openbaar |
---|---|---|---|---|
toegankelijk vanuit de klas | X | X | X | X |
toegankelijk vanuit het pakket | X | X | X | |
toegankelijk vanuit elke onderliggende klasse | X | X | ||
overal toegankelijk | X |
de tabel laat zien hoe de standaardscope past in het schema der dingen. Als u bijvoorbeeld een methode declareert met behulp van de standaardscope, kan elke methode deze gebruiken zolang deze zich in hetzelfde pakket bevindt.Als u bovendien een klasse maakt die overerft van de klasse die de methode bevat, kan de subklasse de methode gebruiken zolang deze zich in hetzelfde pakket bevindt.
Als de subklasse echter buiten het huidige pakket bestaat, kan deze de methode niet gebruiken. Kortom, het standaardbereik is iets beperkter dan het beschermde bereik, maar minder beperkend dan het privébereik.