ホームページ >バックエンド開発 >PHPチュートリアル >PHP におけるオーバーロードとオーバーライドの違い

PHP におけるオーバーロードとオーバーライドの違い

墨辰丷
墨辰丷オリジナル
2018-05-25 14:57:221462ブラウズ

この記事では主にPHPにおけるオーバーロードとオーバーライドの違いについて紹介します。とても良い参考値になっていますので、以下のエディタで見てみましょう

override (書き換え、オーバーライド)

1. メソッド名、パラメータ、戻り値は同じです。

2. サブクラスのメソッドは、親クラスのメソッドのアクセス権を減らすことはできません。

3. サブクラス メソッドは親クラス メソッドよりも多くの例外をスローできません (ただし、サブクラス メソッドは例外をスローする必要はありません)。

4. 親クラスとサブクラスの間に存在します。

5. メソッドはfinalとして定義されており、オーバーライドできません。

overload (オーバーロード、オーバーロード)

1. パラメータの型、数、順序の少なくとも 1 つが異なります。

2. 戻り値のみが異なるメソッド名はオーバーロードできません。

3. 親クラス、サブクラス、および類似のクラスに存在します。

メソッドのオーバーライドとオーバーロードは、Java ポリモーフィズムの異なる表現です。

オーバーライドは親クラスとサブクラス間のポリモーフィズムの現れで​​あり、オーバーロードはクラス内のポリモーフィズムの現れで​​す。

サブクラスで定義されたメソッドがその親クラスと同じ名前とパラメーターを持つ場合、そのメソッドはオーバーライドされていると言います。サブクラスのオブジェクトがこのメソッドを使用すると、サブクラスの定義が呼び出されることになるため、親クラスの定義が「シールド」されるようです。

クラス内に同じ名前のメソッドが複数定義されている場合、パラメータの数が異なる、パラメータの型が異なる、またはパラメータの順序が異なる場合、メソッドの多重定義 (オーバーロード) と呼ばれます。アクセス許可、戻り値の型、およびスローされた例外を通じてオーバーロードすることはできません

1. オーバーライドされたメソッドのフラグは、オーバーライドされたメソッドのフラグと完全に一致する必要があります。 2. オーバーライドされたメソッドの戻り値は、オーバーライドされたメソッドの戻り値と一致する必要があります。

3. オーバーライドされたメソッドによってスローされる例外は、オーバーライドされるメソッドまたはその子クラスによってスローされる例外と一致する必要があります。 ;

4. オーバーライドされたメソッドをプライベートにすることはできません。それ以外の場合は、オーバーライドせずに新しいメソッドのみがそのサブクラスで定義されます。

2. オーバーロード機能

1. オーバーロードを使用する場合は、異なるパラメーター スタイルのみを使用できます。たとえば、異なるパラメータの型、異なるパラメータの数、異なるパラメータの順序 (もちろん、同じメソッド内の複数のパラメータの型は異なる必要があります。たとえば、fun(int, float) にすることはできますが、fun(int) にすることはできません。 , int )); 2. アクセス許可、戻り値の型、およびスローされた例外を介してオーバーロードを行うことはできません。親クラスで特権アクセスを持っていますが、サブクラスでオーバーロードすることはできません。定義されている場合、新しいメソッドが定義されるだけで、オーバーロードの効果は得られません。

以上がこの記事の全内容です、皆様の学習のお役に立てれば幸いです。

関連する推奨事項:

オーバーライドとオーバーロードの違いと関連性の紹介


PHP オブジェクト指向 - 一般的なオブジェクト指向言語でのメソッドのオーバーロードのシミュレーションの詳細な紹介 (

オーバーロード

)

PHP オブジェクト指向 - オーバーロード (overloading) の詳細を示すサンプル コード

以上がPHP におけるオーバーロードとオーバーライドの違いの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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