Javaの共変戻り値型(Covariant Return Type)とは?基本と実装例を解説
共変戻り値型(Covariant Return Type)とは、オーバーライドするメソッドの戻り値型に関する概念です。この仕組みを利用すると、オーバーライドされたメソッドの戻り値型を、より具体的なサブクラス型へと絞り込むことができ、呼び出し側での明示的なキャストや型チェックが不要になります。なお、共変戻り値型はプリミティブ型には適用できず、参照型(クラス型)でのみ機能します。
Java 5以降では、オーバーライド元のメソッドの戻り値型のサブクラスを新しい戻り値型として指定するという条件を満たすことで、戻り値型だけを変更したメソッドのオーバーライドが可能になりました。
主なポイント
- オーバーライド元の戻り値型のサブクラスを指定できる
- 呼び出し側でキャストが不要になり、コードが簡潔で型安全になる
- int や double などのプリミティブ型には使用できない
以下のサンプルコードで、実際の動作を確認してみましょう。
サンプルコード
class SuperClass {
SuperClass get() {
System.out.println("SuperClass");
return this;
}
}
public class Tester extends SuperClass {
Tester get() {
System.out.println("SubClass");
return this;
}
public static void main(String[] args) {
SuperClass tester = new Tester();
tester.get();
}
}
実行結果
SubClass
この例では、スーパークラスの get() メソッドを、サブクラス側で戻り値型を Tester 型に絞り込んでオーバーライドしています。実行時にはポリモーフィズムにより、実際のオブジェクトの型であるサブクラスのメソッドが呼び出されることがわかります。
-
JavaのLayoutManager(レイアウトマネージャー)とは?6つの種類と使い方を解説
LayoutManager(レイアウトマネージャー)は、GUIフォーム上に視覚コンポーネントをどのように配置するかを制御するための仕組みです。コンテナ内における各コンポーネントのサイズと位置を自動的に決定することで、ウィンドウサイズが変わっても整然としたユーザーインターフェースを維持できます。 LayoutManagerの種類 Javaには、標準で以下の6種類のレイアウトマネージャーが用意されています。 FlowLayout(フローレイアウト):コンポーネントをページ上の文章のように配置します。上段から左から右へ、上から下へと順に詰めていき、追加された順序どおりに並びます。最初のコンポーネン
-
Javaの継承の種類をわかりやすく解説!3つのパターンと具体例
Javaでサポートされる3種類の継承Javaにおける継承(Inheritance)は、既存のクラスのプロパティやメソッドを別のクラスが引き継ぐことで、コードの再利用性を高め、保守性の高いプログラムを実現する重要な仕組みです。Javaでは、主に以下の3種類の継承パターンが利用できます。1. 単一レベル継承(Single Level Inheritance)ひとつのクラスが、別の単一のクラスからプロパティやメソッドを引き継ぐ、最も基本的な継承形式です。例:クラスBがクラスAを継承する。2. 多段階継承(Multilevel Inheritance)あるクラスが、すでに別のクラスを継承しているクラス