web-dev-qa-db-ja.com

メソッドのオーバーロードとオーバーライドの違いは何ですか?

オーバーロードメソッドとオーバーライドメソッドの違いは何ですか?誰かがそれを例で説明できますか?

42
user1662177

メソッドoverloadingは、同じクラスに同じ名前で異なる引数を持つ2つ以上のメソッドを持つという概念を扱います。

void foo(int a)
void foo(int a, float b)

メソッドオーバーライドは、引数が同じで実装が異なる2つのメソッドを持つことを意味します。それらの1つは親クラスに存在し、もう1つは派生クラスまたは子クラスに存在します。 @Overrideアノテーションは必須ではありませんが、コンパイル時に メソッドを適切にオーバーライドする に役立ちます。

class Parent {
    void foo(double d) {
        // do something
    }
}

class Child extends Parent {

    @Override
    void foo(double d){
        // this method is overridden.  
    }
}
129
Hisham Muneer

メソッドのオーバーライドは、子クラスが同じメソッドを親クラスと同じパラメーターで再定義する場合です。 たとえば、、標準のJavaクラスJava.util.LinkedHashSetJava.util.HashSetを拡張します。メソッドadd()LinkedHashSetでオーバーライドされます。タイプがHashSetの変数があり、そのadd()メソッドを呼び出す場合、HashSetであるかどうかに基づいて、add()の適切な実装を呼び出します。またはLinkedHashSet。これはポリモーフィズムと呼ばれます。

メソッドのオーバーロードは、同じクラスで複数のメソッドを定義し、異なる数とタイプのパラメーターを受け入れます。この場合、呼び出される実際のメソッドは、引数の数と型に基づいてコンパイル時に決定されます。 instanceの場合、メソッドSystem.out.println()はオーバーロードされるため、文字列だけでなくintも渡すことができ、異なるバージョンのメソッド。

35
Jainendra