メソッドのオーバーライドとオーバーロードは、Java ポリモーフィズムの異なる表現です。オーバーライドは親クラスとサブクラス間の多態性の現れであり、オーバーロードはクラス内の多態性の現れです。
サブクラスで定義されたメソッドがその親クラスと同じ名前とパラメータを持つ場合、そのメソッドはオーバーライドされていると言います。サブクラスのオブジェクトがこのメソッドを使用すると、サブクラスの定義が呼び出されるため、親クラスの定義が「シールド」されているように見えます。
クラス内に同じ名前の複数のメソッドが定義されており、それらのメソッドのパラメーターの数、パラメーターの型、パラメーターの順序が異なる場合、これをメソッドのオーバーロードと呼びます。アクセス許可、戻り値の型、またはスローされた例外によってオーバーロードすることはできません。
1.メソッドのオーバーロード(オーバーロード)
概念: 簡単に言うと、メソッドのオーバーロードは、クラスの同じ関数の複数の実装メソッドです。どのメソッドが使用されるかは、呼び出し元によって指定されたパラメーターによって決まります。
注意すべき点:
(1) メソッド名が同じである (2) メソッドのパラメータの型、数、順序が少なくとも 1 つで異なっていない (3) メソッドの戻り値の型が異なっていてもよい (4) メソッドの修飾子戻り値の型だけが異なる場合、メソッドは異なる可能性があります。オーバーロードに異なる制御アクセス修飾子シンボルがあるだけの場合、オーバーロードを構成することはできません。
オーバーロードされたメソッドは戻り値の型を変更できます。
2. メソッドオーバーライド(オーバーライド)
概念: 簡単に言うと、メソッド カバレッジとは、親クラスのメソッドと同じ名前、戻り値の型、パラメーターを持つメソッドがサブクラスにあることを意味し、サブクラスのメソッドが親クラスのメソッドをオーバーライドすると言います。クラス。
注: メソッドの適用範囲には多くの条件があります。一般に、注意しなければならない点が 2 つあります。
(1) サブクラスのメソッドの戻り値の型、パラメータ、およびメソッド名は、親クラスのメソッドの戻り値の型、パラメータ、およびメソッド名と完全に一致する必要があります。一致しないとコンパイル エラーが発生します。
(2) サブクラスメソッドは親クラスメソッドのアクセス権を減らすことはできません(その逆も可能です)
例:
インスタンスをオーバーライドする