【JAVA SE】「書き換え」と「オーバーロード」の違い

親切なヒント

皆さんこんにちは、Cbiltpsです 私のブログでは、わかりにくい文章言葉で表現しにくい要点などがある場合は、画像を載せていますなので、写真付きのブログはとても重要です

このセクションのナレッジ ポイントは私のメイン ブログから抽出されたもので、メイン ブログは実際には、すべてのナレッジ ポイントの論理的順序を反映する拡張されたコンテキストとして機能します。ですので、その中で議論する価値のあるものを別途抜き出して、皆さんに食べていただきます!

修正・追加大歓迎です、どうぞ!

本文の始まり

オーバーライド (Override): サブクラスは親クラスの元のメソッドを継承しますが、サブクラスは親クラスのメソッドをそのまま継承したくない場合があるため、メソッド名、パラメータ リスト、戻り値の(サブクラス除く)親クラスのメソッドの戻り値と同じである場合) 、メソッド本体は変更または上書きされますつまり、シェルは変更されませんが、コアは書き換えられます。

  • 書き換えられた 2 つのメソッドの戻り値(除了上面写到的special timeおよびオーバーライドされたメソッドの戻り値の型のサブクラス)メソッド名パラメーター リストは完全に一致している必要があります(サブクラスは親クラスのメソッドをオーバーライドします)。
  • サブクラス メソッドのアクセス レベルは、親クラスの対応するメソッドのアクセス レベルより低くすることはできません。
  • オーバーライドされたメソッドによってスローされた例外は、オーバーライドされたメソッドまたはそのサブクラスによってスローされた例外と一致します(サブクラスの例外は親クラスの例外を超えることはできません)。
  • privatefinalstatic修飾されたメソッドはオーバーライドできません

オーバーロード: クラス内で、同じ名前のメソッドが異なるパラメーター リスト(異なるパラメーターの種類異なる数のパラメーター、または異なる順序のパラメーター)を持つ場合、それらのメソッドはオーバーロードされているとみなされます。同時に、オーバーロードにが同じでも異なっていてもよいという要件がないため、戻り値の型が同じかどうかによってオーバーロードを判断することはできません

  • メソッド名は同じですが、パラメータリスト(パラメータの順序、番号、型)が異なります。
  • メソッドの戻り値、アクセス修飾子 any

注意点と相違点の概要:

  • 実装をオーバーライドするのは です运行时的多态が、実装をオーバーロードするのは です编译时的多态
  • オーバーライドされたメソッド パラメーター リストは同じ ( 一般情况下)である必要があり、オーバーロードされたメソッド パラメーター リストは異なっている必要があります
  • オーバーライドされたメソッドの戻り値の型は、親クラス型または親クラス型のサブクラスのみですが、オーバーロードされたメソッドには戻り値の型に関する要件はありません。

ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/Cbiltps/article/details/122550276