V tomto tutoriálu se pomocí příkladů dozvíme o Java Access Modifier, jeho typech a jak je používat.
Co jsou modifikátory přístupu?
V Javě se modifikátory přístupu používají k nastavení přístupnosti (viditelnosti) tříd, rozhraní, proměnných, metod, konstruktorů, datových členů a metod setteru. Například,
class Animal ( public void method1() (… ) private void method2() (… ) )
Ve výše uvedeném příkladu jsme deklarovali 2 metody: method1 () a method2 (). Tady,
- method1 is
public- To znamená, že k němu mohou přistupovat jiné třídy. - method2 is
private- To znamená, že k němu nelze přistupovat jinými třídami.
Poznamenejte si klíčové slovo publica private. Jedná se o modifikátory přístupu v Javě. Jsou také známé jako modifikátory viditelnosti.
Poznámka : Nelze nastavit modifikátor přístupu metod getrů.
Typy modifikátoru přístupu
Než se dozvíte o typech modifikátorů přístupu, ujistěte se, že víte o balíčcích Java.
V Javě existují čtyři klíčová slova upravující přístup a jsou to:
| Modifikátor | Popis |
| Výchozí | deklarace jsou viditelné pouze v rámci balíčku (balíček soukromý) |
| Soukromé | deklarace jsou viditelné pouze ve třídě |
| Chráněný | deklarace jsou viditelné v balíčku nebo ve všech podtřídách |
| Veřejnost | prohlášení jsou viditelná všude |
Výchozí modifikátor přístupu
Pokud explicitně neurčíme žádný modifikátor přístupu pro třídy, metody, proměnné atd., Pak se ve výchozím nastavení zohlední výchozí modifikátor přístupu. Například,
package defaultPackage; class Logger ( void message()( System.out.println("This is a message"); ) )
Tady má třída Logger výchozí modifikátor přístupu. A třída je viditelná pro všechny třídy, které patří do balíčku defaultPackage. Pokud se však pokusíme použít třídu Logger v jiné třídě mimo defaultPackage, zobrazí se chyba kompilace.
Modifikátor soukromého přístupu
Když jsou deklarovány proměnné a metody private, nelze k nim přistupovat mimo třídu. Například,
class Data ( // private variable private String name; ) public class Main ( public static void main(String() main)( // create an object of Data Data d = new Data(); // access private variable and field from another class d.name = "Programiz"; ) )
Ve výše uvedeném příkladu jsme deklarovali soukromou proměnnou s názvem name a soukromou metodu s názvem display(). Když spustíme program, dostaneme následující chybu:
Main.java:18: error: name has private access in Data d.name = "Programiz"; ^
Chyba je generována, protože se pokoušíme získat přístup k soukromé proměnné a soukromé metodě třídy Data z třídy Main.
Možná by vás zajímalo, co když budeme potřebovat přístup k těmto soukromým proměnným. V tomto případě můžeme použít metodu getters a setters. Například,
class Data ( private String name; // getter method public String getName() ( return this.name; ) // setter method public void setName(String name) ( this.name= name; ) ) public class Main ( public static void main(String() main)( Data d = new Data(); // access the private variable using the getter and setter d.setName("Programiz"); System.out.println(d.getName()); ) )
Výstup :
Název je Programiz
Ve výše uvedeném příkladu máme soukromou proměnnou s názvem name. Pro přístup k proměnné z vnější třídy jsme použili metody: getName()a setName(). Tyto metody se v Javě nazývají getter a setter.
Zde jsme použili metodu setter ( setName()) k přiřazení hodnoty proměnné a metodu getter ( getName()) pro přístup k proměnné.
Použili jsme thisklíčové slovo uvnitř setName () k odkazování na proměnnou třídy. Chcete-li se dozvědět více o tomto klíčovém slovu, navštivte Java toto klíčové slovo.
Poznámka : V Javě nemůžeme deklarovat třídy a rozhraní jako soukromé. Vnořené třídy však mohou být prohlášeny za soukromé. Chcete-li se dozvědět více, navštivte Java Nested a Inner Class.
Modifikátor chráněného přístupu
Když jsou deklarovány metody a datové členy protected, můžeme k nim přistupovat v rámci stejného balíčku i z podtříd. Například,
class Animal ( // protected method protected void display() ( System.out.println("I am an animal"); ) ) class Dog extends Animal ( public static void main(String() args) ( // create an object of Dog class Dog dog = new Dog(); // access protected method dog.display(); ) )
Výstup :
Jsem zvíře
Ve výše uvedeném příkladu máme chráněnou metodu pojmenovanou display()uvnitř třídy Animal. Třída zvířat je zděděna třídou Pes. Další informace o dědičnosti najdete na stránce Java Inheritance.
Poté jsme vytvořili objektového psa třídy Dog. Pomocí objektu jsme se pokusili získat přístup k chráněné metodě nadřazené třídy.
Vzhledem k tomu, že k chráněným metodám lze přistupovat z podřízených tříd, jsme schopni přistupovat k metodě třídy zvířat ze třídy Dog.
Poznámka : V protectedJavě nemůžeme deklarovat třídy ani rozhraní .
Modifikátor veřejného přístupu
Když jsou deklarovány metody, proměnné, třídy atd. public, Můžeme k nim přistupovat odkudkoli. Modifikátor veřejného přístupu nemá žádné omezení rozsahu. Například,
// Animal.java file // public class public class Animal ( // public variable public int legCount; // public method public void display() ( System.out.println("I am an animal."); System.out.println("I have " + legCount + " legs."); ) ) // Main.java public class Main ( public static void main( String() args ) ( // accessing the public class Animal animal = new Animal(); // accessing the public variable animal.legCount = 4; // accessing the public method animal.display(); ) )
Výstup :
Jsem zvíře. Mám 4 nohy.
Tady,
- Veřejná třída Animal je přístupná z hlavní třídy.
- Veřejná proměnná legCount je přístupná z hlavní třídy.
- K veřejné metodě
display()se přistupuje z třídy Main.
Modifikátory přístupu shrnuty na jednom obrázku
Přístupnost všech modifikátorů přístupu v Javě
Modifikátory přístupu se používají hlavně pro zapouzdření. Mohu nám pomoci určit, která část programu má přístup ke členům třídy. Lze tak zabránit zneužití údajů. Další informace o zapouzdření najdete v Java Encapsulation.








