Для проекта кодирования у меня есть класс, содержащий вложенный класс. Вложенный класс подклассифицирован в пределах одного и того же внешнего класса. Цель состоит в том, чтобы внешний класс содержал некоторые экземпляры вложенного класса, которые он может передать другим экземплярам внешнего класса.
Вложенный подкласс позволяет внешнему классу изменять содержимое, в то время как его суперкласс позволяет читать содержимое и вызывать некоторые методы. Таким образом, объекты суперкласса передаются другим объектам для связывания объектов внешнего класса в цепочке.
Вопрос, который у меня есть, касается модификаторов доступа. Вот пример минималистского кода:
abstract class OuterClass {
protected class NestedSuperClass<T> {
private T data;
public NestedSuperClass (T t) {
this.data = t;
}
public T getOutput() {
return data;
}
}
protected class NestedSubClass<T> extends NestedSuperClass<T> {
public NestedSubClass (T t) {
super(t);
}
protected void setOutput(T t) {
super.data = t;
}
}
}
При поиске некоторой документации я был смущен возможностью доступа к закрытому полю суперкласса, который нигде не упоминается. Есть ли какой-либо ресурс, объясняющий, почему подклассу разрешено модифицировать частное поле суперкласса таким образом?
Я отлично справляюсь с этой работой. Я также заметил, что он работает с данными, помеченными как защищенные, а не private, и не используя ключевое слово super. Меня больше всего интересует любая документация, в которой упоминается эта способность ключевого слова super. Спасибо заранее.