PHPの抽象クラスとインターフェースの違いは何ですか

目次:

Anonim

NS 主な違い PHPの抽象クラスとインターフェースの間は 抽象クラスは、抽象メソッドと非抽象メソッドで構成できますが、インターフェイス内のすべてのメソッドには実装がありません。

PHPはサーバーサイドスクリプト言語です。これは、Web開発で最も人気のある言語の1つです。 PHPを使用すると、ファイルの処理、フォームの処理、電子メールの送信、ファイルのアップロード、アプリケーションとMySQLなどのDBMSの接続などの多くのタスクを実行できます。 ZendやCodeIgniterなどのフレームワークはPHPに基づいています。 PHPは、オブジェクト指向プログラミング(OOP)もサポートしています。 OOPの主要な概念の1つは、抽象化です。実装を非表示にし、機能のみをユーザーに表示するのに役立ちます。抽象クラスとインターフェースは、抽象化を実現するための2つのメソッドです。

抽象化、抽象クラス、インターフェース、OOP、PHP

PHPの抽象クラスとは

抽象メソッドは、実装がないメソッドです。抽象クラスは、少なくとも1つの抽象メソッドを持つクラスです。抽象メソッドと非抽象メソッドの両方を持つことができます。キーワード「abstract」は、抽象クラスを宣言するために使用されます。さらに、抽象クラスを拡張するクラスは、そのクラスの抽象メソッドの実装を提供する必要があります。プログラマーは、抽象クラスを使用してオブジェクトを作成することはできませんが、抽象クラスを拡張するクラスからオブジェクトを作成することはできます。

図1:PHPの抽象クラス

上の画像では、Shapeは抽象クラスです。これには、drawと呼ばれる抽象メソッドとdisplayと呼ばれる非抽象メソッドがあります。三角形のクラスはShapeを拡張します。したがって、triangleクラスは、抽象メソッドdrawの実装を提供します。 19行目では、Triangleのオブジェクトが作成されています。 20行目では、そのオブジェクトを使用してdrawメソッドが呼び出されています。したがって、drawメソッドが実行され、コンソールに「Triangle」が表示されます。

PHPのインターフェースとは

インターフェイスのすべてのメソッドは抽象メソッドです。つまり、関数プロトタイプまたは実装のない関数のみが含まれます。プログラマーは、インターフェースを使用してオブジェクトを作成することはできません。インターフェイスは、「interface」キーワードを使用して宣言されます。インターフェイスのメソッドは抽象ですが、プログラマーはabstractキーワードでそれらを宣言しません。代わりに、これらのメソッドはパブリック可視スコープを持っている必要があります。インターフェイスを実装するクラスは、そのすべての抽象メソッドの実装を提供する必要があります。

図2:インターフェースを備えたPHPプログラム1

上記のプログラムでは、Shapeはインターフェースです。ドローと呼ばれるメソッドがあります。実装はありません。クラスTriangleはShapeを拡張します。 Triangleクラスは、drawメソッドの実装を提供します。 16行目では、Triangleオブジェクトのオブジェクトが作成されています。 17行目では、そのオブジェクトを使用してdrawメソッドが呼び出されています。したがって、drawメソッドが実行され、コンソールに「Triangle」が表示されます。

さらに、インターフェースは多重継承の実装にも役立ちます。多重継承は、クラスが複数のクラスの属性とメソッドを使用できるようにするプロセスです。

図3:インターフェースを備えたPHPプログラム

インターフェイスAにはメソッドmethodAがあります。同様に、インターフェースBにはメソッドmethodBがあります。これらのメソッドは関数プロトタイプです。つまり、これらのメソッドには実装がありません。クラステストはインターフェイスAとBを実装します。したがって、そのクラスはmethodAとmethodBの実装を提供します。クラステストには、methodTestと呼ばれる独自のメソッドもあります。 26行目は、Testのオブジェクトを作成します。次に、そのオブジェクトを使用して、methodA、method、およびmethodTestが呼び出されます。

PHPの抽象クラスとインターフェースの違い

意味

PHPの抽象クラスは、abstractキーワードで宣言されたクラスであり、抽象メソッドと非抽象メソッドのコレクションです。対照的に、PHPのインターフェースは参照型であり、実装や関数プロトタイプのないメソッドのコレクションで構成されています。したがって、これがPHPの抽象クラスとインターフェイスの主な違いです。

メソッド

抽象クラスは、抽象メソッドと非抽象メソッドを持つことができますが、インターフェイス内のすべてのメソッドは実装のないメソッドです。

キーワード

抽象クラスは「abstract」キーワードで宣言されますが、インターフェースは「interface」キーワードで宣言されます。

使用法

PHPの抽象クラスとインターフェイスのもう1つの違いは、抽象クラスは抽象化を実現するのに役立ち、インターフェイスは抽象化と多重継承を実現するのに役立つことです。

結論

PHP言語は、オブジェクト指向プログラミングをサポートしています。抽象化はOOPの柱です。抽象クラスとインターフェースは、抽象化を実現する2つの方法です。 PHPの抽象クラスとインターフェイスの主な違いは、抽象クラスは抽象メソッドと非抽象メソッドで構成できますが、インターフェイス内のすべてのメソッドには実装がないことです。

参照:

1.「PHPの抽象クラス」。 GeeksforGeeks、2018年12月11日、こちらから入手できます。 2.「PHPでの多重継承」。 GeeksforGeeks、2019年2月21日、こちらから入手できます。

PHPの抽象クラスとインターフェースの違いは何ですか