Модификаторы доступа Java (с примерами)

В этом руководстве мы узнаем о модификаторе доступа Java, его типах и способах их использования с помощью примеров.

Что такое модификаторы доступа?

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

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

В приведенном выше примере мы объявили 2 метода: method1 () и method2 (). Вот,

  • method1 is public- это означает, что к нему могут обращаться другие классы.
  • method2 is private- это означает, что он не может быть доступен другим классам.

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

Примечание : вы не можете установить модификатор доступа для методов получения.

Типы модификаторов доступа

Прежде чем вы узнаете о типах модификаторов доступа, убедитесь, что вы знаете о пакетах Java.

В 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.

Вам может быть интересно, а что, если нам понадобится доступ к этим частным переменным. В этом случае мы можем использовать методы получения и установки. Например,

 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

В приведенном выше примере у нас есть частная переменная с именем name. Чтобы получить доступ к переменной из внешнего класса, мы использовали методы: getName()и setName(). Эти методы называются в Java методом получения и установки.

Здесь мы использовали метод setter ( setName()) для присвоения значения переменной и метод getter ( getName()) для доступа к переменной.

Мы использовали thisключевое слово внутри setName () для ссылки на переменную класса. Чтобы узнать больше об этом ключевом слове, посетите Java this Keyword.

Примечание . Мы не можем объявлять классы и интерфейсы частными в Java. Однако вложенные классы можно объявить частными. Чтобы узнать больше, посетите Java Nested and 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 осуществляется из класса Main.
  • Доступ к открытой переменной legCount осуществляется из класса Main.
  • display()Доступ к общедоступному методу осуществляется из класса Main.

Модификаторы доступа на одной диаграмме

Доступность всех модификаторов доступа в Java

Модификаторы доступа в основном используются для инкапсуляции. Я могу помочь нам контролировать, какая часть программы может получить доступ к членам класса. Так что можно предотвратить неправомерное использование данных. Чтобы узнать больше об инкапсуляции, посетите Java Encapsulation.

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