なかなかJavaの継承やオブジェクト指向について理解するのが難しかったのですが、ようやく掴めてきたのでまずはsuperについて説明したいと思います。
superは親クラスのコンストラクタを指して呼び出すことができます。
次のようなコードがあるとします。
public class Name{ Child c = new Child("Teresa"); } public class Parent{ Parent(String name){ System.out.println(name); } } public class Child extends Parent{ Child(String name){ super("Mother"); System.out.println(name); } }
ParentクラスはChildクラスの親クラスで、NameクラスはChildクラスのインスタンスを生成しています。
まずクラス名と同じ名前の関数がコンストラクタとなるので、Childクラスが呼ばれた時はChild(String name)の中身が呼ばれます。はじめにsuper(“Mother”)とありますが、これは親クラスのコンストラクタ「Parent(String name)」を呼ぶという意味です。
したがって、ChildクラスにStringの引数を入れて呼び出すとまずParentクラスのコンストラクタに”Mother”を入れた結果を出力→Childクラスのコンストラクタに”Teresa”を入れた結果を出力、という順番になります。