【发布时间】:2015-10-07 08:17:50
【问题描述】:
对于一个编码项目,我有一个包含嵌套类的类。嵌套类是同一个外部类的子类。目的是让外部类包含嵌套类的一些实例,它可以将其交给外部类的其他实例。
嵌套的子类允许外部类修改内容,而其超类允许读取内容并调用一些方法。因此,超类对象被交给其他对象,以链式链接外部类对象。
我的问题与访问修饰符有关。这是一个极简代码示例:
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;
}
}
}
在查找一些文档时,我对访问超类的私有字段的能力感到困惑,但在任何地方都没有提到。是否有任何资源解释为什么允许子类以这种方式修改超类的私有字段?
我对这项工作完全满意。我还注意到,它似乎适用于标记为受保护而不是私有且不使用 super 关键字的数据。我最感兴趣的是任何提到 super 关键字的这种能力的文档。提前致谢。
【问题讨论】:
-
我投票重新提出这个问题,因为它特别关注
super和私有字段访问而不是一般内部类可访问性的使用 -
我也投票重新提出这个问题。它似乎与重复的问题无关。
-
提示:合成编译器生成的访问器方法
标签: java class inheritance