Javaでの継承とコンストラクタの理解を深める
1. Javaの継承とは?
Javaにおける継承は、あるクラスの属性やメソッドを別のクラスが引き継ぐことを指します。
継承の主な利点は、コードの再利用性を高めること、新しいクラスを迅速に作成すること、そしてコードの整理と保守を容易にすることです。
サルモリ
継承って、まるで親から子へのバトンタッチみたいだね!
2. コンストラクタと継承の関係
サブクラス(子クラス)は、スーパークラス(親クラス)のコンストラクタを自動的に呼び出す。
これは、オブジェクトが正しく構築されるための重要なステップです。具体的に見てみましょう。
サルモリ
親のコンストラクタが呼ばれるのは、親の属性もちゃんと初期化されるためだよね?
サンプルコード1: 基本的な継承とコンストラクタの呼び出し
ソースコード例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
public class Parent { public Parent() { System.out.println("Parent Constructor"); } } public class Child extends Parent { public Child() { System.out.println("Child Constructor"); } public static void main(String[] args) { Child child = new Child(); } } |
出力結果
Parent Constructor
Child Constructor
サルモリ
親クラスのコンストラクタが先に呼ばれて、その後に子クラスのコンストラクタが呼ばれてるね!
3. コンストラクタの引数と継承
引数を持つコンストラクタを継承する場合、子クラスから親クラスのコンストラクタを明示的に呼び出す必要があります。
この動作を確認するためのサンプルコードを見てみましょう。
サルモリ
引数があると、もう少し複雑になるんだね。
Java言語のStreamAPIを徹底的に学びたい方は画像をクリックしてご覧ください!
KindleUnlimited会員であれば、全ての本をご覧頂けます。 StreamAPIを理解すれば、Javaの世界が変わる 第1版
KindleUnlimited会員であれば、全ての本をご覧頂けます。 StreamAPIを理解すれば、Javaの世界が変わる 第1版
サンプルコード2: 引数付きコンストラクタの継承
ソースコード例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
public class ParentWithArg { public ParentWithArg(String message) { System.out.println("Parent Constructor: " + message); } } public class ChildWithArg extends ParentWithArg { public ChildWithArg() { super("Hello from Parent!"); System.out.println("Child Constructor"); } public static void main(String[] args) { ChildWithArg child = new ChildWithArg(); } } |
出力結果
Parent Constructor: Hello from Parent!
Child Constructor
サルモリ
superを使って親クラスのコンストラクタを呼び出すんだね!
4. 複数のコンストラクタと継承
クラスには複数のコンストラクタが存在する場合があります。
継承の際、どのコンストラクタが呼び出されるのか、サンプルコードを通して確認しましょう。
サルモリ
コンストラクタがいっぱいあると、どれが使われるのか気になるね!
サンプルコード3: 複数のコンストラクタを持つクラスの継承
ソースコード例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
public class MultipleConstructors { public MultipleConstructors() { System.out.println("Default Constructor"); } public MultipleConstructors(String message) { System.out.println("Constructor with argument: " + message); } } public class InheritsMultiple extends MultipleConstructors { public InheritsMultiple() { super("Using Argument Constructor"); System.out.println("Child Constructor"); } public static void main(String[] args) { InheritsMultiple child = new InheritsMultiple(); } } |
出力結果
Constructor with argument: Using Argument Constructor
Child Constructor
サルモリ
明示的にどのコンストラクタを呼び出すかをsuperで指定できるんだね!
5. まとめ
Javaでの継承とコンストラクタの動作は、オブジェクト指向プログラミングの基本を理解するうえで非常に重要です。正しい継承とオブジェクトの初期化は、プログラムが予想通りの動作をするための基礎となります。