Я всегда думал, что клиент класса - это тот, который использует ссылку для доступа к экземплярам полей/методов этого класса, то есть другому классу (из его собственных методов). Но когда я думаю о некоторых деталях, есть некоторые вещи, которые я не мог понять.
В Java я знаю несколько мест, где вы можете размещать инструкции действий.
- Внутри метода (экземпляр/статический)
- Inline initialization (когда вы объявляете переменную экземпляра, как в private int x = 5;)
- Статический блок
Возможно, есть больше, чего я не знаю или не помню.
Первая часть вопроса - все эти рассмотренные клиенты, если они находятся в другом классе? Также могут ли они получить доступ к частным вещам, когда они находятся в одном классе?
Вторая часть: Когда JVM вызывает метод (например, main и finalize), они также считаются клиентами? (вызовы не из класса?)
Изменить: Может ли клиент получать доступ только к общедоступным методам и переменным? Не можем ли мы назвать его клиентом, если он обращается к полям пакета (если в одном пакете).