對于編碼項目,我有一個包含嵌套類的類.嵌套類在同一個外部類中進行子類化.其目的是讓外部類包含嵌套類的一些執行個體,它可以傳遞給外部類的其他執行個體.
嵌套子類允許外部類修改内容,而超類允許讀取内容并調用某些方法.是以,超類對象被交給其他對象以連結鍊中的外部類對象.
我關心通路修飾符的問題.這是一個簡約的代碼示例:
abstract class OuterClass {
protected class NestedSuperClass {
private T data;
public NestedSuperClass (T t) {
this.data = t;
}
public T getOutput() {
return data;
}
}
protected class NestedSubClass extends NestedSuperClass {
public NestedSubClass (T t) {
super(t);
}
protected void setOutput(T t) {
super.data = t;
}
}
}
當查找一些文檔時,我被通路超級類的私有字段的能力感到困惑,沒有在任何地方被提及.有沒有資源解釋為什麼子類被允許以這種方式修改超類的私有字段?
我完全可以這樣工作.我也注意到,似乎可以使用标記為受保護而不是私有的資料,而不使用超級關鍵字.我最感興趣的是提供超級關鍵字的這種能力的任何文檔.提前緻謝.