Javaは多重継承を許可していません。つまり、クラスは2つのクラスから継承できません。これは、共通点がないため、同じ継承パス上にないことを意味します。ただし、これらのクラスがクラスの直接スーパークラスのスーパークラスである場合、クラスはより多くのクラスから継承できます。しかし、クラスはこれらのクラスから間接的に継承します。つまり、これらの上位のスーパークラスからは何も「認識」されません。コンストラクターを検討するときに混乱しました(コンストラクターでsuper()を使用)。たとえば、次のクラスがある場合:
public class A {
public A() {
....
}
}
public class B extends A {
public B() {
super();
....
}
}
public class C extends B {
public C() {
super();
....
}
}
クラスCのコンストラクターは、最初にsuper()を使用してクラスBのコンストラクターを呼び出します。これが発生すると、Bのコンストラクター自体が最初にAのコンストラクターを呼び出します(super()を使用)が、CのコンストラクターはAのコンストラクターについて何も知りませんよね?つまり、継承は直接のスーパークラス(継承階層の最初の(最も近い)クラス)からのみです。これが私の質問です。super()では、継承階層に他のクラスがいくつあっても、直接スーパークラスのコンストラクターのみを意味します。そして、これはコンストラクターだけでなく、すべてのメソッドとインスタンス変数に適用されます。
よろしく