Hozzáférés-módosítók a Java-ban magyarázva

Mik azok a hozzáférés-módosítók?

Szerette volna már meghatározni, hogy az emberek hogyan jutnának hozzá egyes ingatlanjaihoz? Nem akarja, hogy bárki használja a fehérneműt. Közeli barátai és rokonai azonban használhatják pulóverét, esetleg autóját.

A pozíciókhoz való hozzáférés szintjének beállításához hasonlóan a Java is ellenőrzi a hozzáférést. Meg kell határoznia a változók, metódusok és osztályok hozzáférési szintjét attól függően, hogy melyik további osztályokat szeretné elérni.

A Java 4 szintű hozzáférés-módosítót biztosít. Ez azt jelenti, hogy egy változóhoz, módszerhez vagy osztályhoz való hozzáférést 4 módon módosíthatja. Ez a 4 mód magán, nyilvános, védett és alapértelmezett.

Ezek a hozzáférés-módosítók alkalmazhatók mezőkre, módszerekre és osztályokra (az osztályok speciális eset, ezeket az artice végén fogjuk megnézni). Itt van egy gyors áttekintés1 arról, hogy Access Levelsmelyek mindegyik Access Modifier:

Hozzáférés-módosítók táblázat hivatkozása:

Hozzáférés-módosítók táblázat

Privát hozzáférés módosító

Lehetővé teszi egy változó vagy módszer elérését csak abban az osztályban, amelyben létrehozták. A változót vagy metódust létrehozó osztályon kívül egyetlen más osztály sem férhet hozzá. Ez szorosan hasonlít a belső szerveihez. Csak a tulajdonos fér hozzá. Ha egy változót vagy metódust priváttá akar tenni, egyszerűen hozzá kell adnia a privát kulcsszót a változó vagy a metódus típusa elé. Használjuk a privát kódolási példát. Ha egy bank 10% -os kamatlábat akar biztosítani a kölcsönöknél, akkor biztos lehet abban, hogy a kamatláb-változó (tegyük fel int int_rate;) tegyük magánnak , mivel egyetlen más osztály sem próbálná meg elérni és megváltoztatni. Például;

private String name;

A fenti példa létrehoz egy névnek nevezett változót, és biztosítja, hogy az csak abban az osztályban legyen elérhető, amelyből létrehozták.

Egy másik példa a módszerre

private void setAge(){ System.out.println("Set Age"); }

A fenti példa biztosítja, hogy a setAge metódus csak abban az osztályban érhető el, amelyből létrehozták, és sehol máshol.

Nyilvános hozzáférés módosító

A nyilvános hozzáférés módosítója közvetlenül ellentétes a privát hozzáférés módosítójával. Egy osztály, módszer vagy változó nyilvánossá tehető, és ez azt jelenti, hogy bármely osztályból elérhető. A nyilvános hozzáférés módosítója hasonlítható egy állami iskolához, ahol bárki felvételt kérhet és felveheti.

Nyilvános osztály, módszer vagy változó bármikor elérhető bármely más osztályból.

Például ahhoz, hogy nyilvánossá nyilvánítson egy osztályt, csak a következőkre van szüksége:

public class Animal{ }

Mint ilyen, az Animal osztályba bármely más osztály beléphet.

public int age; public int getAge(){ }

A fenti módszerek egy változó és egy módszer nyilvánosként történő megadását mutatják be.

Az alapértelmezett hozzáférés-módosító

Az alapértelmezett hozzáférés-módosító abban különbözik az összes többi hozzáférés-módosítótól, hogy nincs kulcsszava. Az alapértelmezett hozzáférés-módosító használatához egyszerűen használja a többi hozzáférés-módosítót, és ez egyszerűen azt jelenti, hogy alapértelmezett hozzáférés-módosítót használ.

Például egy osztály alapértelmezett hozzáférés-módosítójának használatához a

class Bird{ }

Ez alapvetően azt jelenti, hogy az alapértelmezett hozzáférés-módosítót használja. Az alapértelmezett hozzáférés-módosító lehetővé teszi, hogy egy változó, módszer vagy osztály ugyanazon csomagon belüli többi osztály számára is elérhető legyen. A csomag egy kapcsolódó osztályok gyűjteménye egy fájlkönyvtárban. További információ a csomagokról a csomagokról szóló részben található.

Az alapértelmezett hozzáférés-módosító használatára deklarált változóhoz, metódushoz vagy osztályhoz egyetlen olyan osztály sem férhet hozzá, amely azon a csomagon kívül van, ahonnan deklarálták.

int age; void setNewAge(){ }

A fentiekben bemutatunk néhány módot az alapértelmezett hozzáférés-módosító használatára egy változó vagy módszer számára. Ne felejtsd el, hogy az alapértelmezett hozzáférés-módosítónak nincs kulcsszava. A 3 másik hozzáférés-módosító hiánya azt jelenti, hogy az alapértelmezett hozzáférés-módosítót használja.

Védett hozzáférés-módosító

A védett hozzáférés-módosító szorosan kapcsolódik az alapértelmezett hozzáférés-módosítóhoz. A védett hozzáférés-módosító rendelkezik az alapértelmezett hozzáférés-módosító tulajdonságokkal, de egy kis fejlesztéssel.

Egyedül egy változó és egy módszer használja a védett hozzáférés-módosítót. A kis javulás az, hogy az osztálycsomagon kívüli osztály, amelyből a változót vagy metódust deklarálták, hozzáférhet az említett változóhoz vagy metódushoz. Ez CSAK akkor lehetséges, ha örökli az Osztályt.

Egy másik csomag osztályának, amely képes védett változókat vagy metódusokat látni, ki kell terjesztenie a változókat vagy metódusokat létrehozó osztályt.

Az öröklés előnye nélkül vegye figyelembe, hogy az alapértelmezett hozzáférés-módosító pontosan ugyanolyan hozzáféréssel rendelkezik, mint egy védett hozzáférés-módosító.

Az alábbiakban bemutatunk példákat a védett hozzáférés-módosító használatára:

protected int age; protected String getName(){ return "My Name is You"; }

Hozzáférés-módosítók az osztályokban

Alapértelmezés szerint az osztályoknak csak 2 módosítója lehet:

  • nyilvános
  • nincs módosító (alapértelmezett módosító)

Tehát ez azt jelenti, hogy az osztályokat soha nem lehet beállítani privatevagy protected?

Ez logikus, miért akarna privát osztályt csinálni? Más osztály nem lenne képes használni. De néha beágyazhat egy osztályt egy másik osztályba. Ezek a speciális osztályok inner classesbeállíthatók privátként vagy védetté, hogy csak a környező osztály férhessen hozzá:

public class Car { private String brand; private Engine engine; // ... private class Engine { // ... } }

A fenti példában csak az Carosztály használhatja az Engineosztályt. Ez bizonyos esetekben hasznos lehet.

Más osztályok soha nem állíthatók protectedvagy private, mert nincs értelme. A protectedhozzáférés-módosítót dolgok készítésére használják, package-privatede azzal a lehetőséggel, hogy hozzáférhető legyen az alosztályok számára. A java-ban nincs olyan fogalom, mint „alcsomagok” vagy „csomag-öröklés”.