ホームページ  >  記事  >  バックエンド開発  >  PHPのオーバーロードとオーバーライドの違いを詳しく解説

PHPのオーバーロードとオーバーライドの違いを詳しく解説

黄舟
黄舟オリジナル
2017-03-07 09:42:041196ブラウズ

この記事では主に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) に注目してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。