PHP の抽象クラスとインターフェイス
Sheeraz Gul
2023年6月20日
![PHP の抽象クラスとインターフェイス](/img/PHP/ag-feature-image---php-abstract-class-vs-interface.webp)
このチュートリアルでは、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 のどのメンバーも静的にすることはできません。 |
著者: Sheeraz Gul
Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.
LinkedIn Facebook