#このチュートリアルの動作環境: Windows7 システム、Java8 バージョン、DELL G3 コンピューター。違い: 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. オーバーライドされたメソッドは、新しいチェック例外またはオーバーライドされたメソッドの宣言よりも広いチェック例外をスローしてはなりません
) はオーバーロードとみなされます。同時に、オーバーロードには戻り値の型が同じでも異なっていてもよいという要件はありませんが、戻り値の型が同じかどうかで オーバーロードを判断することはできません。 例:
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 サイトの他の関連記事を参照してください。