Javaでのオーバーロードと書き換えの違いは何ですか
違い: 1. オーバーロードはコンパイル時のポリモーフィズムを実装しますが、書き換えは実行時のポリモーフィズムを実装します。 2. クラス内でオーバーロードが発生し、同じ名前のメソッドのパラメータ リストは異なっていなければなりません。また、サブクラスと親クラスの間で上書きが発生する場合、オーバーライドされるメソッドのオーバーライド メソッドは同じである必要があります。 3. オーバーロードされたメソッドの戻り値の型は変更できますが、オーバーライドされたメソッドは変更できません。 4. オーバーロードされたメソッドの例外は変更でき、オーバーライドされたメソッドの例外は削減または削除できますが、新しい例外やより広範囲の例外をスローしてはなりません。 5. オーバーロードされたメソッドのアクセスは変更できますが、オーバーライドされたメソッドのアクセスをより厳密に制限してはなりません。
オーバーライド
文字通り、オーバーライドとは、再度書き込むことを意味します。実際、 親クラス自体のメソッド をサブクラス内で書き換えます。サブクラスは親クラスの元のメソッドを継承しますが、サブクラスは親クラスのメソッドをそのまま継承したくない場合があるため、メソッド名、パラメータリスト、戻り値の型(サブクラスのメソッドを除く)戻り値が親クラス(サブクラス)のメソッドの戻り値と同じ場合は、 メソッド本体を修正または書き換え(書き換え)します。ただし、サブクラス関数のアクセス変更権限は、親クラスのアクセス変更権限よりも低くすることはできないことに注意してください。
例:
public class Father { public static void main(String[] args) { // TODO Auto-generated method stub Son s = new Son(); s.sayHello(); } public void sayHello() { System.out.println("Hello"); } } class Son extends Father{ @Override public void sayHello() { // TODO Auto-generated method stub System.out.println("hello by "); } }
概要を書き直す:
1. 親クラスと子クラスの間で発生します 2メソッド名、パラメータリスト、戻り値の型 (サブクラスのメソッドの戻り値の型が親クラスの戻り値の型のサブクラスである場合を除く) は同じでなければなりません
3. アクセス修飾子の制限オーバーライドされたメソッドのアクセス修飾子 (public>protected>default>private) よりも大きい必要があります。
4. オーバーライドされたメソッドは、新しいチェック例外またはオーバーライドされたメソッドの宣言よりも広いチェック例外をスローしてはなりません
オーバーロード#クラス内で、同じ名前のメソッドに異なるパラメータ リストがある場合 (
異なるパラメータ タイプ、異なる数のパラメータ、さらには異なるパラメータ) order) はオーバーロードとみなされます。同時に、オーバーロードには戻り値の型が同じでも異なっていてもよいという要件はありませんが、戻り値の型が同じかどうかで オーバーロードを判断することはできません。 例:
public class Father { public static void main(String[] args) { // TODO Auto-generated method stub Father s = new Father(); s.sayHello(); s.sayHello("wintershii"); } public void sayHello() { System.out.println("Hello"); } public void sayHello(String name) { System.out.println("Hello" + " " + name); } }
1. オーバーロード オーバーロードはクラス A マニフェストにおけるポリモーフィズムです 2. オーバーロードでは、同じ名前のメソッドのパラメーター リストが異なる必要があります (パラメーターの型、パラメーターの数、パラメーターの順序も)
3. オーバーロードの場合、戻り値の型は同じでも異なっていても構いません。戻り値の型は、オーバーロードされた関数を区別する基準として使用することはできません回答: メソッドのオーバーロードと書き換えはどちらもポリモーフィズムを実現する方法です。違いは、前者はコンパイル時のポリモーフィズムを実装するのに対し、後者は実行時のポリモーフィズムを実装することです。
クラス内でオーバーロードが発生します。同じ名前のメソッドに異なるパラメーター リスト (異なるパラメーターの種類、異なる数のパラメーター、またはその両方) がある場合、それはオーバーロードとみなされ、オーバーライドはサブクラスで発生します。親クラスの場合、オーバーライドするには、サブクラスのオーバーライドされたメソッドが親クラスのオーバーライドされたメソッドと同じパラメーター リストを持ち、互換性のある戻り値の型を持ち、親クラスのオーバーライドされたメソッドよりもアクセスしやすく、また、オーバーライドできない必要があります。親クラスのオーバーライドされたメソッドと比較して、メソッドをオーバーライドして、より多くの例外を宣言します (リスコフ置換原則)。 オーバーロードには戻り値の型に特別な要件がなく、戻り値の型に基づいて区別することはできません。 #相違点オーバーライド メソッド | パラメータ リスト | |
---|---|---|
変更してはなりません | 戻り値の型 | |
変更してはなりません | 例外 | |
削減または削除できます。新しい例外またはより広い例外をスローしてはなりません | アクセス | |
これ以上の制限は禁止(制限を下げることは可能) |
概要 メソッドのオーバーライドとオーバーロードは、Java ポリモーフィズムの異なる表現です。オーバーライドは、親クラスとサブクラス間のポリモーフィズムです。性別の表現、オーバーロードは、特定の表現として理解できます。ポリモーフィズムのこと。
プログラミング関連の知識について詳しくは、プログラミング教育をご覧ください。 ! |
以上がJavaでのオーバーロードと書き換えの違いは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック

Java の乱数ジェネレーターのガイド。ここでは、Java の関数について例を挙げて説明し、2 つの異なるジェネレーターについて例を挙げて説明します。

Java のアームストロング番号に関するガイド。ここでは、Java でのアームストロング数の概要とコードの一部について説明します。

Java の Weka へのガイド。ここでは、weka java の概要、使い方、プラットフォームの種類、利点について例を交えて説明します。

この記事では、Java Spring の面接で最もよく聞かれる質問とその詳細な回答をまとめました。面接を突破できるように。

Java 8は、Stream APIを導入し、データ収集を処理する強力で表現力のある方法を提供します。ただし、ストリームを使用する際の一般的な質問は次のとおりです。 従来のループにより、早期の中断やリターンが可能になりますが、StreamのForeachメソッドはこの方法を直接サポートしていません。この記事では、理由を説明し、ストリーム処理システムに早期終了を実装するための代替方法を調査します。 さらに読み取り:JavaストリームAPIの改善 ストリームを理解してください Foreachメソッドは、ストリーム内の各要素で1つの操作を実行する端末操作です。その設計意図はです
