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 public
a 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 this
klíč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 protected
Javě 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

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.