1.php インターフェイス クラス: インターフェイス
実際、その機能は非常に単純です。多くの人が一緒にプロジェクトを開発する場合、他の人が作成したクラスを呼び出すことがあります。その場合、その特定の機能をどうやって知ることができるのでしょうか。実装メソッドの名前はどのように決まるのでしょうか? このとき、インターフェイス クラスを定義するときに、そのクラス内のメソッドを次のようなサブクラスで実装する必要があります。
次のようにコードをコピーします。インターフェース Shop
{
public function buy($gid);
public function view($gid);
}
3 つのメソッドを定義します: Buy、sell、および view の場合、このクラスを継承するすべてのサブクラスは、これら 3 つのメソッドのいずれかを実装する必要があります。サブクラスがこれらを実装していない場合、機能しません。実際、インターフェイス クラスは、端的に言えば、クラスのテンプレートであり、クラスの規則です。このカテゴリに属する場合は、どのような方法であっても、私の規則に従わなければなりません。それはあなた次第です。次のようなものです:
次のようにコードをコピーします:
class BaseShop は Shop{
public function buy($gid)
{
echo('次の ID で製品を購入しました: '.$gid.');
}
public function sell($gid)
{
echo('ID: '.$gid.')
}
public function view($gid)
{
echo('You Viewed the product with the ID: '.$gid.');
}
}
考えてみてください、多くの人が共同作業する大規模なプロジェクトでは、インターフェイス クラスがあると非常に便利です。あなたの特定の関数のメソッド名が何であるかを他の人に尋ねる必要がないようにします。 もちろん、これが好きなら、私はそれをせずにはいられません。
2.php 抽象クラス: 抽象
実は、抽象クラスとインターフェースクラスは部分的に似ているのですが、抽象クラスは似ている部分を抽出しているという文章をどこかで見た記憶がありますが、実際には「抽象クラスの真実を理解する」と書かれています。抽象クラスの役割は、多くのクラスが頻繁に書き換えているメソッドを使用していることがわかった場合に、「パブリック クラスごとに書き換えることはできない」という場合に、抽象クラスの使用を検討できることです。クラスのインスタンスを作成し、このパブリック クラスをインスタンス化し、同じメソッドを呼び出します。」 これで問題ありません。実際、これは抽象クラスの動作ですが、インスタンス化の手順が省略できるため、このメソッドを呼び出すのと同じくらい便利です。クラスに直接アクセスすることもできますが、このメソッドをオーバーロードすることもできます。例:
次のようにコードをコピーします。
{
public function buy($gid)
{
echo('ID: '.$gid.' の製品を購入しました。'); public function sell($gid)
{
echo('ID: '.$gid.' の商品を販売しました。');
}
public function view($gid)
{
echo('次の ID で商品を閲覧しましたID: '.$gid.'); :'.$gid. の製品');
}
}
クラス BallShop は BaseShop を拡張します
var $itme_id = null; $this->itme_id = 2314;
}
public function open()
{
$this->sell($this->itme_id);
}
}
上記と同様に、 Store クラスを定義し、そのすべてのアイテム (part、buy、sell、view など) を抽出しました。これらのメソッドは抽象クラスに実装されており、それを継承するサブクラスがこれらのメソッドを自動的に取得し、サブクラスが独自の処理を実行します。 、コードの重複を導入し、再利用性を向上させます。
結論: 抽象クラスはクラスのサービスプロバイダーです。サービスを提供しないことに不満がある場合は、それらを使用する必要はありません。
はは、上記は PHP インターフェイス クラスと抽象クラスについての私の謙虚な意見です。これら 2 つについて混乱している友人に役立つことを願っています。その他の関連記事については、メッセージを残してください。 PHP 中国語 Web サイト (www.php.cn) に注意してください。