すべて

014-006 - 明示的なスーパークラスのメソッド呼び出し

子クラスでメソッドをオーバーライドした場合でも、super.メソッド名()を使うことで親クラスの元のメソッドを明示的に呼び出すことができます。これにより、親クラスの処理を活用しつつ、追加の処理を実装できます。オーバーライドしたメソッド内で親の処理を再利用する際に特に有用で、コードの重複を効果的に防げます。

明示的なsuper呼び出しは、コードの重複を避け、親クラスの機能を効率的に再利用するために重要です。親クラスの処理に追加や修正を加えたい場合、全てを書き直すのではなく、super呼び出しと追加処理を組み合わせることで効率的に実装できます。実務では、ログ出力の拡張、データ検証の追加、初期化処理の拡張などで頻繁に使用されます。たとえば、親クラスのtoString()メソッドの結果に、子クラス固有の情報を追加して返すような実装が典型的です。また、Webフレームワークでフィルター処理を拡張する際にもよく使われます。

この項目を学ぶことで、継承における処理の再利用と拡張を適切にバランスさせられるようになります。親クラスの変更に強い設計が可能になります。前提知識として、メソッドのオーバーライドとsuper()の基本を理解している必要があります。

問題 (9)

無料トライアル
014-006-001

super.メソッド呼び出し:自己紹介

# super.メソッド呼び出し:自己紹介 **この問題では**: `Person`<a href="https://javadrill.tech/problems/007">クラス</a>の`di...

無料トライアル
014-006-002

super.メソッド呼び出し:レシピ管理

# super.メソッド呼び出し:レシピ管理 **この問題では**: `Recipe`<a href="https://javadrill.tech/problems/007">クラス</a>を<a...

014-006-003

superキーワード:親メソッドの呼び出し

# superキーワード:親メソッドの呼び出し **この問題では**: サブクラスから`super`キーワードを使って親クラスの<a href="https://javadrill.tech/pro...

014-006-004

super.メソッド名による親メソッド呼び出し

# super.メソッド名による親メソッド呼び出し **この問題では**: `Employee`<a href="https://javadrill.tech/problems/007">クラス</...

014-006-005

Objectクラス:toString()のオーバーライド

# Objectクラス:toString()の<a href="https://javadrill.tech/problems/014/005">オーバーライド</a> **この問題では**: `B...

014-006-006

super.メソッド()による親メソッド呼び出し

# super.<a href="https://javadrill.tech/problems/008">メソッド</a>()による親メソッド呼び出し **この問題では**: `Employee`...

014-006-007

super.を使ったフィールドアクセス

# super.を使ったフィールドアクセス **この問題では**: super.キーワードを使用して親クラスと子クラスの同名フィールドにそれぞれアクセスし、両方の値を標準出力に表示するプログラムを作...

014-006-008

メソッドチェーンでのsuper呼び出し

# メソッドチェーンでのsuper呼び出し **この問題では**: 3階層の継承クラス(Grandparent→Parent→Child)でsuperキーワードを使って親クラスの<a href="h...

014-006-009

superによるメソッド呼び出し

# superによるメソッド呼び出し **この問題では**: `Person`クラスと`Employee`クラスを作成し、`Employee`の`greet()`メソッド内で`super.greet...