私は Java と OOP の初心者です。
クラス A でプライベート サブクラス (実際には構造体) B を使用していましたが、サブクラス B の親クラス C を作成することを決定するまで、すべてがうまくいきました。クラス C の保護されたメンバーの一部を公開したいと考えています。
例えば:
public class A {
private class B extends C {
public int product;
public int x;
public int y;
public void add() {
product=x+y;
}
}
B b=new B;
b.x=1;
b.y=2;
b.multiply();
System.out.println(b.product+"="+b.x+"x"+b.y);
public class C {
protected int x;
protected int y;
public int sum;
public C(px,py) {
x=px;
y=py;
}
public void sum() {
sum=x+y;
}
}
そして、私は得る
暗黙のスーパー コンストラクター C() は、既定のコンストラクターに対して未定義です。明示的なコンストラクターを定義する必要があります
もちろん、extend C を削除して、以前の状態に戻すこともできます。または、ゲッター/セッターを作成することもできます。しかし、内部構造体が受け入れられ、他のクラスを拡張できるはずであることは理解できると思います。