Модификаторы доступа в Java
В Java модификаторы доступа - это ключевые слова, используемые для определения доступности или наглядности классов, методов, переменных и конструкторов.
Модификатор | Класс | Пакет | Подкласс | Глобальный |
---|---|---|---|---|
public | ✅ | ✅ | ✅ | ✅ |
protected | ✅ | ✅ | ✅ | ❌ |
default | ✅ | ✅ | ❌ | ❌ |
private | ✅ | ❌ | ❌ | ❌ |
В Java существует четыре типа модификаторов доступа:
- public: предоставляет неограниченный доступ к классу, методу, переменной или конструктору из любого другого класса в том же пакете или в разных пакетах. Он обеспечивает высочайший уровень видимости.
- protected: разрешает доступ к классу, методу или переменной в пределах того же пакета или подклассов (в любом пакете). Он более ограничительный, чем public, но менее ограниченый, чем доступ default (package-private).
- default (без модификатора): если модификатор доступа не указан, применяется модификатор доступа default. Он разрешает доступ к классу, методу или переменной только в пределах одного пакета. Он также известен как package-private.
- private: ограничивает доступ к классу, методу или переменной только в пределах одного класса. Он обеспечивает наивысший уровень инкапсуляции и является наиболее ограничивающим модификатором доступа
Приведем пример, демонстрирующий использование модификаторов доступа:
package com.example;
public class MyClass {
public int publicVar;
protected int protectedVar;
int defaultVar; // модификатор доступа default
private int privateVar;
public void publicMethod() {
// код доступен везде
}
protected void protectedMethod() {
// Код доступен в пределах одного пакета и подклассов
}
void defaultMethod() {
// Код доступнен в пределах одного пакета
}
private void privateMethod() {
// Код доступнен только в пределах одного класса
}
}
В приведенном выше примере к publicVar и publicMethod() можно получить доступ из любого класса, в то время как к protectedVar и protectedMethod() можно получить доступ из одного пакета или подклассов. defaultVar и defaultMethod() имеют закрытый доступ к пакету, что означает, что они доступны только в пределах одного пакета. privateVar и privateMethod() доступны только в пределах одного класса.
Комментарии
Для того чтобы оставить свое мнение, необходимо зарегистрироваться на сайте