Video: Chapter 9, Part 1: Web 2024
När dina Java-program blir mer komplexa, blir behovet av att överväga räckvidd allt viktigare. Huvudskälet är att du oavsiktligt kan införa ett fel i din ansökan genom att inte följa reglerna för överensstämmelse.
Detta kan bero på att ett fält eller en annan medlem används felaktigt av ansökan (till exempel att lägga till ett felaktigt datavärde eller få tillgång till en metod vid fel tid eller felaktiga uppgifter). Vidare kan felaktig scoping låta dörren vara öppen för utomstående att interagera med din ansökan på oförutsedda sätt (som ett virus).
Standardutrymmet uppstår när du inte specifikt tilldelar ett räckvidd till ett klasselement. Eftersom många Java-utvecklare inte har någon aning om hur standardräckvidden är för vissa element (och om du använder ett standardfält innebär det att din kod inte dokumenteras) används inte så ofta.
Ändå behöver du t o vet vad standardomfattningen är för olika element eftersom vissa Java-utvecklare litar på det. Men innan du kan förstå standardutbudet måste du överväga synlighet - mäten för vilka applikationselement kan se en medlem. Java ger följande nivåer av synlighet (i allmän ordning för inkapsling):
-
Förpackning: Behållaren användes för att hålla ett antal klasser. När du arbetar med en enkel katalogstruktur, som exemplen i den här boken, är paketet en katalog som innehåller ett antal. klassfiler.
-
Klass: En klass ligger vanligtvis i en enda. java-fil som du sammanställer till en. klassfilen. Den innehåller en enda klassdeklaration.
-
Metod: Ett element kan finnas i klassen eller som en del av en metod. Metoden fungerar som en behållare för att hålla elementet.
-
Block: Ett element kan ligga inom ett kodblock, till exempel en för loop.
Omfattning beror delvis på den plats som används för att deklarera ett element. Till exempel är en variabel som definieras inom ett block (t.ex. en för loop) synlig endast inom det här blocket. När du försöker använda variabeln utanför blocket visar Java ett undantag. Med hänsyn till synlighet beskriver den här tabellen de olika nivåerna inom Java-miljön.
Synlighet | privat | (standard) | skyddad | allmän |
---|---|---|---|---|
Tillgänglig från klassen | X | X | X | X |
Tillgänglig från paketet | X | X | X | |
Tillgänglig från vilken klass som helst | X | X | ||
Tillgänglig varsomhelst | X |
Bordet visar hur standardutbudet passar in i ordningen med saker. Om du till exempel anger en metod genom att använda standardomfånget, kan en metod använda den så länge den ligger i samma paket.Om du dessutom skapar en klass som ärar från klassen som innehåller metoden, kan underklassen använda metoden så länge den ligger i samma paket.
Men om underklassen existerar utanför det aktuella paketet, kan det inte använda metoden. Kort sagt är standardomfattningen lite mer restriktiv än det skyddade räckviddet, men mindre restriktivt än det privata räckviddet.