メソッドのオーバーロードとメソッドのオーバーライドの違いは何ですか?誰かが例でそれを説明できますか?
2 に答える
メソッドのオーバーロードは、同じクラスに同じ名前で引数が異なる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.
}
}
メソッドのオーバーライドとは、子クラスが親クラスと同じメソッドを同じパラメーターで再定義する場合です。たとえば、標準のJavaクラスは。をjava.util.LinkedHashSet
拡張しjava.util.HashSet
ます。メソッドadd()
はでオーバーライドされLinkedHashSet
ます。タイプがの変数があり、HashSet
そのメソッドを呼び出すと、それがaであるか。であるかに基づいてadd()
、の適切な実装が呼び出されます。これはポリモーフィズムと呼ばれます。add()
HashSet
LinkedHashSet
メソッドのオーバーロードとは、同じクラスで、異なる数とタイプのパラメーターを受け入れる複数のメソッドを定義することです。この場合、呼び出される実際のメソッドは、引数の数とタイプに基づいて、コンパイル時に決定されます。たとえば、メソッドSystem.out.println()
はオーバーロードされているため、文字列だけでなくintも渡すことができ、メソッドの別のバージョンが呼び出されます。