47

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

4

2 に答える 2

137

メソッドのオーバーロードは、同じクラスに同じ名前で引数が異なる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.  
    }
}
于 2012-09-11T16:54:04.063 に答える
35

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

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

于 2012-09-11T16:53:35.163 に答える