В этом руководстве мы узнаем о модификаторе доступа 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 Encapsulation.