Модификаторы доступа Java
Модификаторы доступа к Java
В этом руководстве мы узнаем о модификаторе доступа Java, его типах и способах их использования с помощью примеров.
Что такое модификаторы доступа?
В Java модификаторы доступа используются для установки доступности (видимости) классов, интерфейсов, переменных, методов, конструкторов, элементов данных и методов установки. Например,
class Animal {
public void method1() {...}
private void method2() {...}
}
В приведенном выше примере мы объявили 2 метода:method1() и method2(). Здесь
- метод1 это
public
- Это означает, что к нему могут обращаться другие классы. - метод2 равно
private
- Это означает, что другие классы не могут получить к нему доступ.
Обратите внимание на ключевое слово public
. и private
. Это модификаторы доступа в Java. Они также известны как модификаторы видимости.
Примечание :Вы не можете установить модификатор доступа для методов получения.
<час>Типы модификаторов доступа
Прежде чем вы узнаете о типах модификаторов доступа, убедитесь, что вы знаете о пакетах Java.
В Java есть четыре ключевых слова модификаторов доступа:
Модификатор | Описание |
По умолчанию | объявления видны только внутри пакета (пакет частный) |
Частный | объявления видны только внутри класса |
Защищено | объявления видны внутри пакета или всех подклассов |
Общедоступно | объявления видны везде |
Модификатор доступа по умолчанию
Если мы явно не указываем какой-либо модификатор доступа для классов, методов, переменных и т. д., то по умолчанию рассматривается модификатор доступа по умолчанию. Например,
package defaultPackage;
class Logger {
void message(){
System.out.println("This is a message");
}
}
Здесь Логгер класс имеет модификатор доступа по умолчанию. И этот класс виден всем классам, принадлежащим 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. класс из Главного класс.
Вам может быть интересно, что, если нам понадобится доступ к этим закрытым переменным. В этом случае мы можем использовать метод геттеров и сеттеров. Например,
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());
}
}
Вывод :
The name is Programiz
В приведенном выше примере у нас есть частная переменная с именем name. . Чтобы получить доступ к переменной из внешнего класса, мы использовали методы:getName()
и setName()
. Эти методы называются геттерами и сеттерами в Java.
Здесь мы использовали метод установки (setName()
), чтобы присвоить значение переменной и методу получения (getName()
) для доступа к переменной.
Мы использовали this
ключевое слово внутри setName() для ссылки на переменную класса. Чтобы узнать больше об этом ключевом слове, посетите Java this Keyword.
Примечание :Мы не можем объявлять классы и интерфейсы приватными в 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();
}
}
Вывод :
I am an animal
В приведенном выше примере у нас есть защищенный метод с именем display()
. внутри животного учебный класс. Животное класс наследуется собакой учебный класс. Чтобы узнать больше о наследовании, посетите страницу Наследование Java.
Затем мы создали объект собака Собаки учебный класс. С помощью объекта мы попытались получить доступ к защищенному методу родительского класса.
Поскольку к защищенным методам можно получить доступ из дочерних классов, мы можем получить доступ к методу Animal класс из класса Собака класс.
Примечание :мы не можем объявлять классы или интерфейсы 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();
}
}
Вывод :
I am an animal. I have 4 legs.
Здесь
- Открытый класс Animal доступен из Главного класс.
- Общая переменная legCount доступен из Главного класс.
- Открытый метод
display()
доступен из Главного класс.
Модификаторы доступа представлены на одном рисунке
<рисунок>Модификаторы доступа в основном используются для инкапсуляции. Я могу помочь нам контролировать, какая часть программы имеет доступ к членам класса. Так что неправильное использование данных может быть предотвращено. Чтобы узнать больше об инкапсуляции, посетите страницу Инкапсуляция Java.
java