ホームページ >バックエンド開発 >PHPの問題 >PHPのクラスと関数の違い

PHPのクラスと関数の違い

(*-*)浩
(*-*)浩オリジナル
2019-09-23 16:04:383848ブラウズ

オブジェクト指向プログラミング (OOP) では、かなりの数の機能が導入されており、プログラミングがより複雑になっています。カプセル化、継承、ポリモーフィズムは OOP の 3 つの要素であり、プロシージャ内の関数にはありません。

PHPのクラスと関数の違い

は、

1 で具体化されます。カプセル化: class/interface/public/protected/private

2. 継承: 拡張/実装 (推奨学習: PHP プログラミングの入門から習熟まで )

3. ポリモーフィズム: メソッドの書き換え/メソッドのオーバーロード

New 新しい変数スコープには、つまり、クラスとインターフェイスのコード ブロックには、関数にはないスコープがあります。

このスコープでは、変数と関数をクラスとインターフェイスのメンバーとして定義し、これらのメンバーへのアクセスを制御するための public/protected/private キーワードの使用をサポートできます。たとえば、public は、外部アクセスがallowed および protected は外部アクセスが許可されていることを意味します。アクセスはクラスとそのサブクラスに対して許可され、private はクラス内でのみアクセスが許可されることを意味します。

クラスは、キーワード class を使用して宣言する必要があります。クラスは、属性とメソッドで構成されます。オブジェクトはインスタンス化でき、クラスは継承できます。一般に、クラスはオブジェクト指向プログラミングで使用されます。関数には、属性。一般にプロセス指向で使用され、特定の問題を解決するために記述されます。

さらに、OOP では、メソッドの書き換えとメソッドのオーバーロードという多態性の機能も導入されています。つまり、次のとおりです。

メソッドの書き換え: パラメーター リスト、メソッドは同じです。 body Different.

メソッドのオーバーロード: 異なるパラメーター リスト、異なるメソッド body.

メソッドのオーバーライドは継承に依存します。つまり、サブクラスのメソッドが親クラスのメソッドをオーバーライドします。メソッド名とパラメータ リストは同じである必要があります。

メソッドのオーバーロードは継承に依存しません。これは、同じクラス内の同じ名前を持つ 2 つ以上のメソッドであり、パラメータ リストが異なります。

継承メソッドとオーバーライドされたメソッドのみアクセス許可を維持または拡大できますが、減らすことはできないことに注意してください。

たとえば、親クラスの保護されたメソッドをパブリックとしてオーバーロードすることが可能です。 subclass.

PHP では、同じ名前の A メソッドが複数あるため、C/Java のようなメソッドのオーバーロードはサポートされていません。

しかし、PHP にはマジック メソッド (__call) が用意されています。 、__callStatic) は間接メソッドのオーバーロードに使用されます。

PHP でのメソッドの書き換えには同じパラメーターは必要ありません。

PHP は多重継承 (複数の親クラスの継承) をサポートしていませんが、複数のインターフェイスを実装できます。また、特性属性を使用して多重継承を間接的にサポートすることもできます。

一部の人々は、継承によってサブクラスと親クラスの間の結合が強化されると考えているため、継承に反対します。Go などの一部の新しいプログラミング言語では、継承に反対します。継承を直接サポートしていませんが、組み合わせを使用して継承を置き換えます。たとえば、依存関係の注入は、本質的にはアイデアの組み合わせでもあり、分離を実現するために使用されます。PHP では、クラスを最終的に変更して、このクラスの継承を禁止することができます。

以上がPHPのクラスと関数の違いの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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