[解決済み] 共変量戻り値型とは何ですか?
2022-10-06 18:55:02
質問
Javaにおけるcovariant return typeとは何ですか? 一般的なオブジェクト指向プログラミングでは?
どのように解決するのですか?
Covariant returnとは、あるメソッドをオーバーライドするときに、オーバーライドするメソッドの戻り値の型がオーバーライドするメソッドの戻り値の型のサブタイプであることが許されることを意味します。
例でこれを明確にするために、よくあるケースとして
Object.clone()
- という型を返すと宣言されているものです。
Object
. これを自分のクラスでオーバーライドすると、次のようになります。
public class MyFoo
{
...
// Note covariant return here, method does not just return Object
public MyFoo clone()
{
// Implementation
}
}
ここでの利点は、MyFoo オブジェクトへの明示的な参照を持つどのメソッドも、MyFoo オブジェクトを呼び出すことができるようになることです。
clone()
のインスタンスであることを (キャストすることなく) 知ることができます。
MyFoo
. 共変量戻り値型がない場合、MyFoo のオーバーライドされたメソッドが返すのは
Object
- を返すと宣言しなければならないので、呼び出し側のコードはメソッド呼び出しの結果を明示的にダウンキャストしなければなりません (たとえ両者が MyFoo のインスタンスにしかならないことを知っていてもです)。
には何も特別なものはないことに注意してください。
clone()
について特別なことはなく、オーバーライドされたメソッドはすべて共変の戻り値を持つことができます。これがしばしば役立つ標準的なメソッドであるため、ここではこれを例として使用しました。
関連
-
Javaでよくある構文エラー
-
セミコロン期待値エラー解決
-
アノテーション「@Retention」の役割
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] Java Mapの各エントリを効率的に反復処理するには?
-
[解決済み] Javaでメモリーリークを発生させるにはどうしたらいいですか?
-
[解決済み] JavaでStringをintに変換するにはどうしたらいいですか?
-
[解決済み] serialVersionUIDとは何ですか、またなぜそれを使用する必要がありますか?
-
[解決済み] リスコフ置換原理の例として、どのようなものがありますか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
アクセス制限です。タイプ 'Application' は API ではない(必要なライブラリに制限がある)。
-
型に解決できない エラー解決
-
Javaクラスが "Error occurred during initialization of boot layer "というエラーで実行される。
-
ajax コミット リソースの読み込みに失敗しました: サーバーはステータス 400 で応答しました ()
-
SocketException java.netの4つの例外解決策。
-
ジャバアレイ
-
List list = new ArrayList(); Error: ArrayList は型に解決できません。
-
Javaがエラーで実行される、選択が起動できない、最近起動したものがない
-
htmlとwordの相互変換の実装(画像あり)
-
[解決済み] オーバーライドされたメソッドは、戻り値の型を変えることができますか?