ホームページ  >  記事  >  Java  >  Javaでのオーバーロードと書き換えの違いは何ですか

Javaでのオーバーロードと書き換えの違いは何ですか

青灯夜游
青灯夜游オリジナル
2023-01-06 14:14:5321731ブラウズ

違い: 1. オーバーロードはコンパイル時のポリモーフィズムを実装しますが、書き換えは実行時のポリモーフィズムを実装します。 2. クラス内でオーバーロードが発生し、同じ名前のメソッドのパラメータ リストは異なっていなければなりません。また、サブクラスと親クラスの間で上書きが発生する場合、オーバーライドされるメソッドのオーバーライド メソッドは同じである必要があります。 3. オーバーロードされたメソッドの戻り値の型は変更できますが、オーバーライドされたメソッドは変更できません。 4. オーバーロードされたメソッドの例外は変更でき、オーバーライドされたメソッドの例外は削減または削除できますが、新しい例外やより広範囲の例外をスローしてはなりません。 5. オーバーロードされたメソッドのアクセスは変更できますが、オーバーライドされたメソッドのアクセスをより厳密に制限してはなりません。

Javaでのオーバーロードと書き換えの違いは何ですか

#このチュートリアルの動作環境: Windows7 システム、Java8 バージョン、DELL G3 コンピューター。

オーバーライド

文字通り、オーバーライドとは、再度書き込むことを意味します。実際、

親クラス自体のメソッド をサブクラス内で書き換えます。サブクラスは親クラスの元のメソッドを継承しますが、サブクラスは親クラスのメソッドをそのまま継承したくない場合があるため、メソッド名、パラメータリスト、戻り値の型(サブクラスのメソッドを除く)戻り値が親クラス(サブクラス)のメソッドの戻り値と同じ場合は、 メソッド本体を修正または書き換え(書き換え)します。ただし、サブクラス関数のアクセス変更権限は、親クラスのアクセス変更権限よりも低くすることはできないことに注意してください。
例:

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 ポリモーフィズムの異なる表現です。オーバーライドは、親クラスとサブクラス間のポリモーフィズムです。性別の表現、オーバーロードは、特定の表現として理解できます。ポリモーフィズムのこと。

  • (1) メソッドのオーバーロードとは、同じ名前で引数の数が異なるメソッド、または数は同じでも型や順序が異なるメソッドを複数定義するクラスです。 、それはメソッドと呼ばれます。

  • (2) メソッドのオーバーライドとは、サブクラスのメソッドが親クラスのメソッドと同じ名前で、パラメータの数と型が同じであるメソッドです。戻り値も同じになることをオーバーライドといいます。

  • (3) メソッドのオーバーロードはクラスの多態性の表現ですが、メソッドのオーバーライドはサブクラスと親クラスの多態性の表現です。

Javaでのオーバーロードと書き換えの違いは何ですか

プログラミング関連の知識について詳しくは、プログラミング教育をご覧ください。 !

以上がJavaでのオーバーロードと書き換えの違いは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。