ホームページ  >  記事  >  バックエンド開発  >  PHP の抽象クラスと抽象メソッドが何であるかを理解する必要があります

PHP の抽象クラスと抽象メソッドが何であるかを理解する必要があります

WBOY
WBOYオリジナル
2021-10-26 15:52:063509ブラウズ

前回の記事では、PHPインターフェースの宣言と応用問題について詳しく紹介した「5分で分かるPHPのインターフェース宣言と応用(詳細例)」をご紹介しましたが、この記事では、PHP の抽象クラスと抽象メソッドについて説明します。皆さんのお役に立てれば幸いです。

PHP の抽象クラスと抽象メソッドが何であるかを理解する必要があります

前回の記事では、インターフェイスを紹介し、インターフェイスは特別な抽象クラスとして理解できると述べました。抽象クラスとは何かを知る まず、抽象メソッドとは何かについて説明する必要があります。抽象クラスと抽象メソッドの出現は、主にクラスの継承を容易にするためです。次に、抽象メソッドと抽象クラスが何であるかを見てみましょう。

抽象メソッドとは

以前の研究では、クラスは複数のサブクラスを持つことができ、抽象メソッドを定義しました。クラスの継承を容易にするため。メソッド本体のないクラスで定義されたメソッドは、抽象メソッドです。では、メソッド本体とは何でしょうか?メソッド本体は、クラスの宣言時に中括弧と中括弧内の内容を参照します。メソッド本体がないということは、そのような内容がないことを意味します。代わりに、メソッド ステートメントの後に直接配置され、セミコロンで終わります。宣言中。これを抽象メソッドと呼びます。

抽象メソッドを宣言するときは、キーワード「abstract」を使用して変更する必要があることに注意してください。

abstract 访问权限修饰符 function 方法名1(参数列表);
abstract 访问权限修饰符 function 方法名2(参数列表);

抽象メソッドを理解するのは比較的簡単ですが、次に、抽象クラスとは何かを見てみましょう。

#抽象クラスとは

#上記の説明で、抽象メソッドが何であるかはすでにわかりました。抽象クラスは実際には非常に理解しやすいです クラス内のメソッドが抽象メソッドである場合、そのクラスを抽象クラスとして定義します。同時に、抽象クラスも "

abstract" キーワードを使用して変更する必要があります。抽象クラスでは、抽象メソッドではないメンバー属性が存在する可能性がありますが、メソッドが抽象メソッドになると、このクラスは抽象クラスです。

抽象クラスのすべてのメンバ メソッドが抽象メソッドであるわけではないことに注意してください。抽象メソッドではないメンバ メソッドおよび属性アクセス許可は、

private にすることはできません。メソッドについても同様です。抽象クラス内で使用され、サブクラスによって継承される必要があります。

例を挙げてみましょう:


abstract class demo{
var $test;
abstract function fun1();
abstract function fun2();
}

抽象クラスの特徴

  • 抽象クラス両方の抽象メソッドを abstract で変更する必要があります。

  • 抽象メソッドは抽象クラス内に存在する必要があり、抽象クラス内に抽象メソッドを含めることはできません。

  • 抽象クラスはオブジェクトを直接作成 (インスタンス化) できません;

  • 抽象クラスのサブクラスがすべての抽象メソッドをオーバーライドする場合、それは具象クラスになりますが、抽象クラスのサブクラスはオーバーライドします。すべての抽象メソッドをオーバーライドしない場合、サブクラスは依然として抽象クラスです;

抽象クラスには実装できない抽象メソッドが含まれています。つまり、抽象クラスをインスタンス化できません。オブジェクトを作成できないため、それを直接使用することはできません。では、直接使用することはできないので、抽象クラスを使用することでどのような問題を解決できるでしょうか?


次に、例を通して見てみましょう。抽象クラスを定義し、別のクラスを使用してこの抽象クラスを継承し、抽象クラスに抽象メソッドを実装します。

例は次のとおりです:

<?php
    abstract class father{
        public $study = &#39;好好学习<br>&#39;;
        public $study1 = &#39;天天向上<br>&#39;;
        abstract function title();
        abstract function output();
    }
    class Demo extends father{
        public function title(){
            echo &#39;福如东海,寿比南山。&#39;;
        }
        public function output(){
            echo $this -> study.$this -> study1;
        }
    }
    $obj = new Demo();
    $obj -> output();
    $obj -> title();
?>

出力結果:


PHP の抽象クラスと抽象メソッドが何であるかを理解する必要があります

上記の例から、次の定義を実装します。抽象クラスを作成し、別のクラスを使用してこの抽象クラスを継承し、抽象クラスに抽象メソッドを実装します。

前回の記事ではPHPインターフェースの関連知識について述べましたが、インターフェースは特別な抽象クラスとして理解できると書かれていましたが、特殊なのでPHPインターフェースとPHPインターフェースの違いは何でしょうか?抽象クラス?類似点についてはどうですか?以下を見てみましょう。まず、PHP インターフェイスについて紹介している「

5 分でわかる PHP のインターフェイス宣言とアプリケーション (詳細な例)」を読むことをお勧めします。

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

  • 抽象クラスは属性、通常メソッド、抽象メソッドを持つことができますが、インターフェイスは属性を持つことができません, 通常のメソッド メソッドには定数を含めることができます。

  • 抽象クラスには抽象メソッドは存在しない可能性がありますが、インターフェイスには「抽象」メソッドが存在する必要があります。

  • 抽象クラスは、abstract キーワードを使用してクラスの前に宣言され、クラスはクラスとして宣言されます。インターフェイスは、interface で宣言されますが、インターフェイスは次のとおりであるため、class で宣言することはできません。クラスではありません。

  • 抽象クラスは extends キーワードを使用して、サブクラスが親クラスを継承し、サブクラスに詳細な抽象メソッドを実装できるようにします。このインターフェイスは、通常のクラスがクラス内のインターフェイスの詳細なメソッドを実装できるようにするために、実装を使用します。また、インターフェイスは、カンマを使用して各インターフェイスを区切るだけで、一度に複数のメソッドを実装できます。

PHP インターフェイスと抽象クラスの類似点

  • はすべて、特定のものの宣言、名前とパラメータの標準化、およびモジュールの形成に使用されます。詳細な実装の詳細はありません。

  • 関連する詳細はすべてクラスを通じて実装されます。

  • 構文的には、抽象クラスの抽象メソッドはインターフェイスと同じであり、メソッド本体、つまり {} シンボルを持つことはできません。

  • インターフェイスはインターフェイスを継承して新しいインターフェイスを形成し、抽象クラスは抽象クラスを継承して新しい抽象クラスを形成できます。

ご興味がございましたら、「PHP ビデオ チュートリアル 」をクリックして、PHP の知識をさらにご覧ください。

以上がPHP の抽象クラスと抽象メソッドが何であるかを理解する必要がありますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。