Вы сейчас просматриваете Кто имеет доступ к методу?

Кто имеет доступ к методу?

В Java “кто-то”, кто имеет доступ к методу, — это любой объект или класс, который имеет к нему доступ в зависимости от модификатора доступа, который указан в сигнатуре метода.

Давайте разберём, как это работает с разными уровнями доступа.

1. Модификаторы доступа и область видимости методов

  • public: метод доступен из любого класса, то есть его может вызвать любой объект или класс, у которого есть ссылка на объект содержащего метода.
  • protected: метод доступен в том же пакете и в классах-наследниках, даже если они находятся в другом пакете.
  • default (или без модификатора, называемый также package-private): метод доступен только для классов внутри того же пакета.
  • private: метод доступен только внутри класса, в котором он объявлен, и не может быть вызван из других классов.

2. Контекст вызова метода

Метод могут вызвать разные типы сущностей в коде, в зависимости от его контекста и модификаторов доступа:

  • Внутри самого класса: любой метод класса может вызывать другие методы того же класса, включая приватные.
  • Из объектов других классов: если метод является public, его можно вызывать на объекте из любого класса, например, myObject.someMethod().
  • Из классов-наследников: если метод помечен как protected или public, его можно вызывать из подклассов (при наследовании).

Пример: вызов метода с разными модификаторами доступа

class Example {
public void publicMethod() {

System.out.println("Public method");
}
protected void protectedMethod() {

System.out.println("Protected method");
}
void defaultMethod() {

System.out.println("Default method");
}
private void privateMethod() {

System.out.println("Private method");
}
}

Допустимые вызовы этих методов будут зависеть от того, откуда они вызываются:

  • Внутри самого класса Example можно вызвать все методы.
  • Из другого класса в том же пакете можно вызвать public, protected, и default методы.
  • Из класса в другом пакете можно вызвать только public методы, а protected методы — только если другой класс наследует Example.

Таким образом, “кто-то” — это объект или класс, имеющий соответствующий доступ к методу и способный вызвать его в зависимости от контекста и модификатора доступа вызываемого метода.