1.php InterfaceClass:interface
実際、多くの人々が一緒にプロジェクトを開発するとき、彼らは皆、他の人が書いたいくつかのクラスを呼び出すことがあります。特定の関数の実装メソッドはどのように名付けられますか? このとき、インターフェイス クラスを定義するとき、その中のメソッドは次のようなサブクラスによって実装される必要があります。コードは次のとおりです。
interface Shop { public function buy($gid); public function sell($gid); public function view($gid); }
ショップ インターフェイス クラスを宣言し、buy、sell、view の 3 つのメソッドを定義します。その後、
継承このクラスのすべてのサブクラスがそれを実装する必要があります。サブクラスの場合、これら 3 つのメソッドはいずれも機能しません。これらを実装しないと機能しません。実際、インターフェイス クラスは、端的に言えば、クラスのテンプレートであり、クラスの規則です。このカテゴリに属する場合は、どのような方法であっても、私の規則に従わなければなりません。それをどうするかはあなた次第です:
コードは次のとおりです:
class BaseShop implements Shop { public function buy($gid) { echo('你购买了ID为 :'.$gid.'的商品'); } public function sell($gid) { echo('你卖了ID为 :'.$gid.'的商品'); } public function view($gid) { echo('你查看了ID为 :'.$gid.'的商品'); } }考えてみてください、多くの人が一緒に作業する大規模なプロジェクトでは、インターフェイス クラスがあると非常に便利です。特定の関数について他の人に尋ねる必要はありません。メソッド名は何ですか? もちろん、これが好きなら仕方ありません。
結論: インターフェイス クラスはクラスのリーダーであり、方向を示し、サブクラスは指定されたメソッドを完了する必要があります。
2.phpAbstract class
: abstract
実は、抽象クラスとインターフェースクラスは似ている部分があるのですが、このような文をどこで見たか覚えていますが、この文は一見おかしいですが、実はそれがわかります。抽象クラスの真実は、クラスの多くが常に繰り返し記述している多くのメソッドを使用していることがわかった場合、抽象クラスの使用を検討できることです。 「クラスごとに、このパブリック クラスをインスタンス化し、同じメソッドを呼び出します。」 これは可能です。実際、これは抽象クラスの機能ですが、インスタンス化する必要がなくなります。この手順により、呼び出しと同じくらい便利になります。このクラス メソッドを直接ロードすることも、このメソッドを オーバーロードすることもできます。例:
コードは次のとおりです:
abstract class BaseShop { public function buy($gid) { echo('你购买了ID为 :'.$gid.'的商品'); } public function sell($gid) { echo('你卖了ID为 :'.$gid.'的商品'); } public function view($gid) { echo('你查看了ID为 :'.$gid.'的商品'); } } class BallShop extends BaseShop { var $itme_id = null; public function construct() { $this->itme_id = 2314; } public function open() { $this->sell($this->itme_id); } }これは例です。上記と同様に、ストアクラスを定義し、buy、sell、view、およびこれらのメソッドが抽象的に実装されている場合のすべての部分を抽出しました。クラスを継承すると、サブクラスは独自の処理を実行し、コードの重複が生じ、再利用性が向上します。
結論: 抽象クラスはクラスのサービスプロバイダーです。サービスを提供しないことに不満がある場合は、それらを使用する必要はありません。
以上がPHPインターフェイスクラスと抽象クラスの機能は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。