Вы создаете класс C, который расширяет B, если я правильно понимаю, вы хотите, чтобы C имел значения некоторого класса B, которые вы получаете каким-либо другим способом, где.
Когда вы расширяетекласс, который нужно вызвать super()
в первой строке, чтобы вызвать конструктор суперкласса.Таким образом, ваши методы, такие как в вашем классе B, где у вас есть параметры B(int c, int d)
, должны иметь
B(int a, int b, int c, int d) {
super(a, b);
this.c = c;
this.d = d;
}
Если вы этого не сделаете, вы получите ошибку компилятора, так как класс, который вы расширяете, имеетконструктор, который вы никогда не вызываете.
Я бы отформатировал его так ...
class A {
private int a, b;
public A(int a, int b) {
this.a = a;
this.b = b;
}
}
class B extends A {
private int c, d;
public B(int a, int b, int c, int d) {
super(a, b);
this.c = c;
this.d = d;
}
}
class C extends B {
private int f;
public C(int a, int b, int c, int d, int f) {
super(a, b, c, d);
this.f = f;
}
}
Итак, когда вы устанавливаете класс C
, вы, возможно, должны вызвать new C(B.getA(), B.getB() ..etc)