PHP の抽象クラスとインターフェイス
    
    Sheeraz Gul
    2023年6月20日
    
    PHP
    PHP Class
    PHP Interface
    
 
このチュートリアルでは、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のどのメンバーも静的にすることはできません。 | 
        チュートリアルを楽しんでいますか? <a href="https://www.youtube.com/@delftstack/?sub_confirmation=1" style="color: #a94442; font-weight: bold; text-decoration: underline;">DelftStackをチャンネル登録</a> して、高品質な動画ガイドをさらに制作するためのサポートをお願いします。 Subscribe
    
著者: 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