我有兩個關於內部類的問題。首先是擴展和覆蓋子類中內部類的方法和屬性。
假設我有一個包含派生屬性的內部類的超類。使用內部類進行子類化,僅序列化外部
class ASuper implements Serializable {
// Attributes, methods
int a;
int b;
class Inner {
// Derived attributes, methods
int c;
int d;
public calculate() {
c = a + b;
d = a * b;
}
}
}
我想繼承ASuper以這樣的方式,一些在內部類的子類的屬性被賦予新的價值,有些是相同的。
class ASub extends ASuper {
int e;
class Inner {
int f;
public calculate() {
// int c = same as in the super class
f = a^b - e;
}
}
}
我真的不明白如何做到這一點。我是否必須重寫int c的定義ASub.Inner.calculate()或者我可以參考super?
第二個問題是關於序列化。外部類的對象必須是可序列化的,但內部類的相應對象不需要,因爲它們的所有屬性都是從外部對象的屬性派生的。我如何實現這一點?
這並沒有真正回答這個問題,但當事情變得複雜時,我通常避免使用內部類,並在構造函數中明確地將'ASuper'的實例傳遞給'Inner'。 – biziclop
你的內部類不包含任何「派生屬性」。派生類的內部類不會爲第一個內部類的任何屬性提供任何新值。你的內部類的屬性不是從它們的外部類派生的。不清楚你在說什麼。或問。 – EJP
也許我使用錯誤的術語。 「派生」屬性指的是來自其他屬性的_calculated_屬性。像上面例子中的屬性'c','d'和'f'。 – Zeron