Változó hatókör Java-ban

1. Áttekintés

A Java-ban, mint minden programozási nyelvben, minden változónak van hatóköre. Ez a program azon része, ahol egy változó használható és érvényes.

Ebben az oktatóanyagban bemutatjuk a Java-ban elérhető hatóköröket, és megvitatjuk a közöttük lévő különbségeket.

2. Osztály hatóköre

Minden változó, amely egy osztály zárójelébe esik ( {} ) val vel magán hozzáférés-módosító, de bármilyen módszeren kívül, osztálykörrel rendelkezik. Ennek eredményeként ezek a változók az osztály minden részén használhatók, azon kívül azonban nem:

public class ClassScopeExample {privát egész szám = 0; public void exampleMethod () {összeg ++; } public void anotherExampleMethod () {Integer anotherAmount = összeg + 4; }}

Ezt láthatjuk ClassScopeExample osztályváltozóval rendelkezik összeg amelyek az osztály módszerein belül érhetők el.

Ha nem használjuk magán, a teljes csomagról elérhető lesz. További információt a hozzáférés-módosítók cikkben talál.

3. Módszer hatóköre

Ha egy változót deklarálunk egy metódus belsejében, akkor annak metódusa van és csak ugyanazon a módszeren belül érvényes:

public class MethodScopeExample {public void methodA () {Egész terület = 2; } public void methodB () {// fordító hiba, a terület nem választható fel változó területre = terület + 2; }}

Ban ben módszerA, létrehoztunk egy nevű metódusváltozót terület. Ezért használhatjuk terület belül módszerA, de máshol nem használhatjuk.

4. Hurok hatóköre

Ha deklarálunk egy változót egy hurok belsejében, annak hurok hatóköre és csak a hurok belsejében lesz elérhető:

public class LoopScopeExample {List listOfNames = Arrays.asList ("Joe", "Susan", "Pattrick"); public void iterationOfNames () {String allNames = ""; a (karakterlánc neve: listOfNames) esetén {allNames = allNames + "" + név; } // fordító hiba, a név nem választható fel String lastNameUsed = name változóra; }}

Láthatjuk azt a módszert iterationOfNames nevű metódusváltozóval rendelkezik név. Ez a változó csak a cikluson belül használható, azon kívül pedig nem érvényes.

5. Zárójel hatóköre

Zárójelben bárhol meghatározhatunk további hatóköröket ({}):

public class BracketScopeExample {public void mathOperationExample () {Egész szám = 0; {Egész szám = 2; összeg = összeg + szám; } // fordító hiba, a szám nem oldható meg változó számként ++; }}

A változó szám csak a zárójelben található.

6. Hatókörök és változó árnyékolás

Képzelje el, hogy van osztályváltozónk, és deklarálni akarunk egy azonos nevű metódusváltozót:

public class NestedScopesExample {String title = "Baeldung"; public void printTitle () {System.out.println (cím); Karakterlánc címe = "John Doe"; System.out.println (cím); }}

Először nyomtatunk cím, ez kinyomtatja a „Baeldung” szót. Ezt követően deklarálja az azonos nevű metódusváltozót, és rendelje hozzá a „John Doe“.

A title metódus változó felülbírálja a osztály változó cím újra. Ezért a második alkalommal kinyomtatja „John Doe.

Zavaros, igaz? Ezt úgy hívják változó árnyékolás és nem jó gyakorlat. Jobb az előtagot használni ez annak elérése érdekében cím osztály változó, tetszik ez.cím.

7. Következtetés

Megismertük a Java-ban létező különböző hatóköröket.

Mint mindig, a kód is elérhető a GitHubon.