この記事では主にPHPにおけるオーバーロードとオーバーライドの違いについて紹介します。とても良い参考値になっていますので、以下のエディタで見てみましょう
override (書き換え、オーバーライド)
1. メソッド名、パラメータ、戻り値は同じです。
2. サブクラスのメソッドは、親クラスのメソッドのアクセス権を減らすことはできません。
3. サブクラス メソッドは親クラス メソッドよりも多くの例外をスローできません (ただし、サブクラス メソッドは例外をスローする必要はありません)。
4. 親クラスとサブクラスの間に存在します。
5. メソッドはfinalとして定義されており、オーバーライドできません。
overload (オーバーロード、オーバーロード)
1. パラメータの型、数、順序の少なくとも 1 つが異なります。
2. 戻り値が異なるメソッド名はオーバーロードできません。
3. 親クラス、サブクラス、および類似のクラスに存在します。
メソッドのオーバーライドとオーバーロードは、Java ポリモーフィズムの異なる表現です。
オーバーライドは親クラスとサブクラス間のポリモーフィズムの現れであり、オーバーロードはクラス内のポリモーフィズムの現れです。
サブクラスで定義されたメソッドがその親クラスと同じ名前とパラメーターを持つ場合、そのメソッドはオーバーライドされていると言います。サブクラスのオブジェクトがこのメソッドを使用すると、サブクラスの定義が呼び出されます。そのため、親クラスの定義は「シールド」されます。
クラス内に同じ名前のメソッドが複数定義されている場合、それらは保護されます。パラメータの数が異なる、パラメータの型が異なる、パラメータの順序が異なる場合、メソッドのオーバーロード (Overloading) と呼ばれます。アクセス許可、戻り値の型、およびスローされた例外を通じてオーバーロードすることはできません
1. オーバーライドされたメソッドのフラグは、オーバーライドされたメソッドのフラグと完全に一致する必要があります。 2. オーバーライドされたメソッドの戻り値は、オーバーライドされたメソッドの戻り値と一致する必要があります。
3. オーバーライドされたメソッドによってスローされる例外は、オーバーライドされるメソッドまたはその子クラスによってスローされる例外と一致する必要があります。 ;
4. オーバーライドされたメソッドをプライベートにすることはできません。それ以外の場合は、オーバーライドせずに新しいメソッドのみがそのサブクラスで定義されます。
2. オーバーロード機能1. オーバーロードを使用する場合は、異なるパラメーター スタイルのみを使用できます。たとえば、異なるパラメータの型、異なるパラメータの数、異なるパラメータの順序 (もちろん、同じメソッド内の複数のパラメータの型は異なる必要があります。たとえば、fun(int, float) にすることはできますが、fun(int) にすることはできません。 , int )); 2. アクセス許可、戻り値の型、およびスローされた例外を介してオーバーロードを行うことはできません。親クラスで特権アクセスを持っていますが、サブクラスでオーバーロードすることはできません。定義されている場合、新しいメソッドが定義されるだけで、オーバーロードの効果は得られません。
上記は、PHP におけるオーバーロードとオーバーライドの違いの詳細な説明です。さらに関連するコンテンツについては、PHP 中国語 Web サイト (www.php.cn) に注目してください。