Модификатори за достъп на Java (с примери)

В този урок ще научим за модификатора на Java Access, неговите типове и как да ги използваме с помощта на примери.

Какво представляват модификаторите на достъп?

В Java модификаторите на достъп се използват за задаване на достъпност (видимост) на класове, интерфейси, променливи, методи, конструктори, членове на данни и методи за задаване. Например,

 class Animal ( public void method1() (… ) private void method2() (… ) )

В горния пример декларирахме 2 метода: method1 () и method2 (). Тук,

  • метод1 е public- Това означава, че може да бъде достъпен от други класове.
  • method2 е private- Това означава, че не може да бъде достъпен от други класове.

Обърнете внимание на ключовата дума publicи private. Това са модификатори на достъп в Java. Те са известни и като модификатори на видимостта.

Забележка : Не можете да зададете модификатора за достъп на методите за получаване.

Видове модификатор на достъп

Преди да научите за видовете модификатори на достъп, уверете се, че знаете за Java Packages.

В Java има четири ключови думи за модификатори на достъп и те са:

Модификатор Описание
По подразбиране декларациите са видими само в пакета (частен пакет)
Частен декларациите са видими само в класа
Защитена декларациите са видими в пакета или във всички подкласове
Публично декларациите са видими навсякъде

Модификатор на достъп по подразбиране

Ако не посочим изрично модификатор на достъп за класове, методи, променливи и т.н., тогава по подразбиране се взема предвид модификаторът за достъп по подразбиране. Например,

 package defaultPackage; class Logger ( void message()( System.out.println("This is a message"); ) )

Тук класът Logger има модификатор за достъп по подразбиране. И класът е видим за всички класове, които принадлежат към пакета defaultPackage. Ако обаче се опитаме да използваме класа Logger в друг клас извън defaultPackage, ще получим грешка при компилация.

Модификатор на частния достъп

Когато променливите и методите са декларирани private, те не могат да бъдат достъпни извън класа. Например,

 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"; ) )

В горния пример декларирахме частна променлива с име name и частен метод с име display(). Когато стартираме програмата, ще получим следната грешка:

 Main.java:18: error: name has private access in Data d.name = "Programiz"; ^

Грешката се генерира, защото се опитваме да осъществим достъп до частната променлива и частния метод на класа Data от класа Main.

Може би се чудите какво, ако имаме нужда от достъп до тези частни променливи. В този случай можем да използваме метода getters и setters. Например,

 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()); ) )

Изход :

 Името е Programiz

В горния пример имаме частна променлива с име. За да получим достъп до променливата от външния клас, използвахме методи: getName()и setName(). Тези методи се наричат ​​getter и setter в Java.

Тук използвахме метода на setter ( setName()), за да присвоим стойност на променливата и метода getter ( getName()) за достъп до променливата.

Използвахме thisключова дума вътре в setName (), за да се позовем на променливата на класа. За да научите повече за тази ключова дума, посетете Java тази ключова дума.

Забележка : Не можем да декларираме класове и интерфейси за частни в Java. Вложените класове обаче могат да бъдат обявени за частни. За да научите повече, посетете Java Nested и Inner Class.

Модификатор на защитен достъп

Когато методите и членовете на данните са декларирани protected, ние можем да имаме достъп до тях в рамките на същия пакет, както и от подкласове. Например,

 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(); ) )

Изход :

 Аз съм животно

В горния пример имаме защитен метод, наречен display()в класа Animal. Класът Animal се наследява от класа Dog. За да научите повече за наследяването, посетете Java Inheritance.

След това създадохме куче обект от класа Dog. С помощта на обекта се опитахме да осъществим достъп до защитения метод на родителския клас.

Тъй като защитените методи могат да бъдат достъпни от дъщерните класове, ние имаме достъп до метода на клас Animal от класа Dog.

Забележка : Не можем да декларираме класове или интерфейси protectedв Java.

Модификатор на публичния достъп

Когато се декларират методи, променливи, класове и т.н. public, тогава можем да имаме достъп до тях от всяко място. Модификаторът за публичен достъп няма ограничение на обхвата. Например,

 // 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(); ) )

Изход :

Аз съм животно. Имам 4 крака.

Тук,

  • Публичният клас Animal е достъпен от основния клас.
  • Публичната променлива legCount е достъпна от главния клас.
  • Публичният метод display()е достъпен от основния клас.

Модификатори на достъпа, обобщени на една фигура

Достъпност на всички модификатори на достъп в Java

Модификаторите за достъп се използват главно за капсулиране. Мога да помогна да контролираме каква част от програмата има достъп до членовете на клас. Така че злоупотребата с данни може да бъде предотвратена. За да научите повече за капсулирането, посетете Java Encapsulation.

Интересни статии...