HOWTO · PHP
PHP の抽象クラスとインターフェイス
このチュートリアルでは、PHP の抽象クラスとインターフェイスの違いを示します。
このチュートリアルでは、PHP における abstract class と interface の違いを示します。
違いに入る前に、まず、抽象クラスとインターフェースの概念を理解する必要があります。 abstract class と interface の両方の重要なポイントは次のとおりです。
PHP の抽象クラス
抽象クラス は、開発者によって部分的に実装され、少なくとも 1つの抽象メソッド (コードのないメソッド) を含みます。 abstract class を理解するための重要なポイントをいくつか紹介します。
abstract classは部分抽象化されています。抽象クラスで変数を作成できます。- 抽象クラスには、抽象メソッドと非抽象メソッドを含めることができます。
抽象クラスでは任意のアクセス修飾子を使用できます。extendsキーワードを使用して、派生クラスからabstract class機能にアクセスできます。抽象クラスでは多重継承が可能です。
abstract class を作成する方法の例を次に示します。
<?php
abstract class Demo_Abstract_Class {
abstract protected
function Get_Value();
public
function Print_Value() {
print $this -> Get_Value();
}
}
?>
PHP のインターフェース
インターフェイスは interface キーワードによって定義され、すべてのメソッドは抽象的です。 interface を理解するための重要なポイントをいくつか紹介します。
- インターフェースは完全に抽象化されています。
interfaceで変数を作成することはできません。interfaceには抽象メソッドのみが含まれます。interfaceではpublicアクセス修飾子のみが使用されます。implementキーワードを使用して、派生クラスからinterfaceを取得できます。interfacesでは複数の継承が可能です。
interface を示す例を次に示します。
<?php
interface Demo_Interface {
public
function execute();
}
?>
PHP の抽象クラスとインターフェイス
abstract class と interface の違いは次のとおりです。
| 抽象クラス | インターフェース |
|---|---|
| 多重継承なし。 | 複数の継承をサポートします。 |
抽象クラス にはデータ メンバーが含まれています。 |
interface にはデータ メンバーが含まれていません。 |
abstract class はコンテナーをサポートします。 |
interface はコンテナーをサポートしていません。 |
abstract class には、完全メンバーと不完全メンバーが含まれています。 |
interface には、メンバーの署名も参照する完全なメンバーのみが含まれます。 |
abstract class は、サブルーチン、プロパティ、および関数を含むアクセス修飾子を持つことができます。 |
interface では、すべてがパブリックと見なされるため、アクセス修飾子がありません。 |
abstract class の完全なメンバーは静的にすることができますが、不完全なメンバーは静的にすることはできません。 |
interface のどのメンバーも静的にすることはできません。 |