明示的なスーパークラスのコンストラクタ呼び出し
014-003 - 明示的なスーパークラスのコンストラクタ呼び出し
Javaでは、子クラスのコンストラクタから親クラスのコンストラクタを明示的に呼び出すために、super()キーワードを使用します。引数を持つ親クラスのコンストラクタを呼び出す場合は、必ず明示的にsuper()を記述する必要があります。この呼び出しは、子クラスのコンストラクタの最初の文として配置しなければなりません。
明示的なsuper()の使用は、継承を活用した柔軟な初期化処理を実現するために重要です。親クラスが複数のコンストラクタを持つ場合、子クラスから適切なものを選択して呼び出すことで、効率的な初期化が可能になります。実務では、データベースエンティティクラスの継承や、フレームワークの基底クラスを拡張する際に頻繁に使用されます。たとえば、Personクラスを継承してStudentクラスを作る場合、親クラスのname、ageなどをsuper()で初期化し、子クラス固有の属性は追加で初期化します。
この項目を学ぶことで、継承における初期化の仕組みを完全に理解し、親クラスと子クラスの初期化を適切に連携させられるようになります。コンパイルエラーを避け、保守性の高いコードが書けます。前提知識として、継承の基本とコンストラクタの仕組みを理解している必要があります。
問題 (12)
明示的super:書籍クラス
# 明示的super:書籍クラス **この問題では**: `Product`<a href="https://javadrill.tech/problems/007">クラス</a>を<a href...
複数引数のスーパークラスコンストラクタ呼び出し
# 複数引数のスーパークラスコンストラクタ呼び出し **この問題では**: `Vehicle`<a href="https://javadrill.tech/problems/007">クラス</a...
ファクトリメソッド:色クラス
# ファクトリメソッド:色クラス **この問題では**: staticファクトリメソッドを持つColorクラスを実装し、色名を入力として受け取り、対応するRGB値を標準出力に表示するプログラムを作成...
明示的なスーパークラスのコンストラクタ呼び出し
# 明示的なスーパークラスのコンストラクタ呼び出し **この問題では**: `Animal`<a href="https://javadrill.tech/problems/007">クラス</a>...
super キーワード:親メソッドの拡張
# super キーワード:親メソッドの拡張 **この問題では**: `super`キーワードを使って親クラス`Vehicle`の`start()`<a href="https://javadril...
super()によるコンストラクタ呼び出し
# super()によるコンストラクタ呼び出し **この問題では**: `super()`を使用して子クラス(`Student`)の<a href="https://javadrill.tech/p...
複数引数のsuper()呼び出し
# 複数引数のsuper()呼び出し **この問題では**: `Product`<a href="https://javadrill.tech/problems/007">クラス</a>と`Book...
コンストラクタチェーンの実装
# コンストラクタチェーンの実装 **この問題では**: ShapeクラスとRectangleクラスを定義し、this()とsuper()を使ってコンストラクタ間を連鎖させ、標準入力から読み込んだ値...
superによるコンストラクタ呼び出し
# superによるコンストラクタ呼び出し **この問題では**: `Animal`クラスと`Dog`クラスを作成し、`Dog`の<a href="https://javadrill.tech/pr...
super()による親コンストラクタ呼び出し
# super()による親コンストラクタ呼び出し **この問題では**: `Person`クラスを<a href="https://javadrill.tech/problems/014">継承</...
多段継承のsuper()チェーン
# 多段継承のsuper()チェーン **この問題では**: `Animal`→`Pet`→`Dog`の3階層の<a href="https://javadrill.tech/problems/01...
引数付きsuper()でエンジン仕様を継承
# 引数付きsuper()でエンジン仕様を継承 **この問題では**: `Vehicle`クラスを<a href="https://javadrill.tech/problems/014">継承</...
