Jelenlegi hely

11.8. Osztálytagok elérhetőségének felügyelete

Egy elérési szint meghatározza, hogy lehetséges-e más osztályok számára használni egy adott tagváltozót, illetve meghívni egy adott metódust. A Java programozási nyelv négy elérési szintet biztosít a tagváltozók és a metódusok számára. Ezek a private, protected, public, és amennyiben nincsen jelezve, a csomag szintű elérhetőség. Az alábbi tábla az egyes szintek láthatóságát mutatja:

osztály csomag leszármazott összes
private I N N N
nincs I I N N
protected I I I N
public I I I I

Az első oszlop azt mutatja, hogy maga az osztály elérheti-e az adott jelzővel megjelölt tagokat. Ahogy az látható, az osztály mindig elérheti saját tagjait. A második oszlop azt mutatja, hogy az eredeti osztállyal azonos csomagban lévő más osztályok – függetlenül a szülői kapcsolatoktól – elérhetik-e a tagokat. Egy csomagban lévő csoportok osztályokkal és interfészekkel állnak kapcsolatban, továbbá elérési védelmet és tárterület felügyeletet biztosítanak. (A csomagokról egy későbbi fejezetben lesz szó.) A harmadik oszlop azt jelzi, hogy az osztály leszármazottai elérhetik-e a tagokat – függetlenül attól, hogy melyik csomagban vannak. A negyedik oszlop pedig azt jelzi, hogy az összes osztály elérheti-e a tagokat.

Az elérési szintek két módon hatnak. Az első mód az, amikor külső forrásból származó osztályokat (például a Java platform osztályait) használjuk, ekkor az elérési szintek meghatározzák, hogy ezen osztályok melyik tagjait tudjuk elérni. A másik mód az, hogy amennyiben saját osztályokat írunk, meghatározhatjuk az elérési szintet minden tagváltozóhoz, metódushoz, illetve konstruktorhoz, amelyek az osztályban szerepelnek.

Tekintsük az osztályok egy halmazát, és nézzük, hogyan működnek az elérési szintek. A következő ábra az alábbi példában szereplő négy osztályt és a közöttük fennálló kapcsolatokat mutatja:

Package