ホームページ  >  記事  >  バックエンド開発  >  PHP抽象クラスの役割は何ですか

PHP抽象クラスの役割は何ですか

爱喝马黛茶的安东尼
爱喝马黛茶的安东尼オリジナル
2019-08-28 13:27:265407ブラウズ

PHP抽象クラスの役割は何ですか

#1. 抽象メソッドとは何ですか?

メソッド本体のないクラスで定義したメソッドは、抽象メソッドです。いわゆるメソッド本体なしとは、宣言時に中括弧やその中身はなく、宣言時にメソッド名の後に直接セミコロンを追加することを意味します。また、抽象メソッドを宣言する場合、メソッドにはキーワードも追加する必要があります。 . 「abstract」を変更します。

例:

abstract function fun1(); 
abstract function fun2();

2. 抽象クラスとは何ですか?

クラス内に抽象メソッドであるメソッドが存在する限り、そのクラスは抽象クラスとして定義されます。また、抽象クラスは「abstract」キーワードを使用して変更する必要があります。抽象クラスには、抽象であるかどうかに関係なく、メソッドとメンバー属性が存在しますが、1 つのメソッドが抽象である限り、そのクラスは抽象クラスとして宣言され、「abstract」で装飾される必要があります。

関連する推奨事項: 「

PHP チュートリアル

例:

abstract class Demo
{ 
    var $test; 
    abstract function fun1();
    abstract function fun2(); 
    function fun3(){
        ...
    }
}

3. 抽象クラスの役割は何ですか?

上記の例では、抽象クラス「demo」が定義され、「abstract」で変更されており、このクラスには、メンバー属性「$test」と 2 つの抽象メソッド「fun1」が定義されています。 「fun2」を含む非抽象メソッド fun3() もあります。

それでは、抽象クラスをどのように使用するのでしょうか?最も重要な点は、抽象クラスはインスタンス オブジェクトを生成できないため、直接使用できないということです。クラスが直接使用できないことはこれまで何度も述べましたが、クラスを通じてインスタンス化されたオブジェクトを使用します。


では、抽象クラスはインスタンス オブジェクトを生成できないのですが、抽象クラスを宣言することに何の意味があるのでしょうか?サブクラスのオーバーロードのテンプレートとして抽象メソッドを使用します。抽象クラスの定義は仕様の定義と同じです。この仕様にはサブクラスが準拠する必要があります。サブクラスが抽象クラスを継承した後、抽象クラス内の抽象クラスが必要に応じてサブクラスによって実装されます。 。サブクラスは、親クラスのすべての抽象メソッドを実装する必要があります。そうでない場合、サブクラスにまだ抽象メソッドが存在する場合、サブクラスは依然として抽象クラスのままであり、オブジェクトをインスタンス化できません。


なぜそうするのか抽象クラスの継承についてはどうですか?いくつかの関数を実装したい場合は、抽象クラスから継承する必要がある場合があり、そうしないとこれらの関数を実装できません。抽象クラスを継承する場合は、そのクラスに抽象メソッドを実装する必要があります。


例:

<?
abstract class Demo
{
    var $test; 
    abstract function fun1();
    abstract function fun2(); 
    function fun3() {
        ...
    }
} 
$demo=new Demo(); //抽象类不能产生实例对象,所以这样做是错的,实例化对象交给子类
 
class Test extends Demo
{
    function fun1() {
        ...
    } 
    function fun2() {
        ...
    }
} 
$test = new Test(); //子类可以实例化对象,因为实现了父类中所有抽象方法
?>

4. 抽象クラスの特性:

抽象クラスはインスタンス化できず、継承のみが可能です。

抽象クラスは必ずしも抽象メソッドを持つ必要はありません。抽象メソッドを持つクラスは抽象クラスでなければなりません。

抽象メソッドの可視性をプライベートにすることはできません。

抽象メソッドはサブクラス内にあるため、書き直す必要があります。

5. 抽象クラスを使用する必要があるのはどのような場合ですか?

メソッドはあるのですが、メソッド本体の書き方がわかりません このメソッドをサブクラスに含める必要がある場合、抽象メソッドにカプセル化され、クラスは抽象クラスになりますクラス。

特定のメソッドをコントロール サブクラスにカプセル化する必要がある場合は、抽象メソッドを使用できます。

継承のみが可能でインスタンス化できないクラスを制御する必要がある場合。

6. インターフェース

クラス内のすべてのメソッドが抽象メソッドでメンバー属性を持たない場合、そのクラスはインターフェースと呼ばれます。

interface Common{
    abstract function work();
    abstract function test($args);
}

インターフェイスの継承 (拡張):

インターフェイスの継承インターフェイス インターフェイスのインターフェイス名は親インターフェイス名を拡張します

注: クラスの継承は単一継承です (親クラスは 1 つだけです) ) ですが、インターフェイスの継承は多重継承であり、クラスによるインターフェイスの実装も多重実装です。

インターフェイス実装 (実装):

クラスはインターフェイス クラスを実装しますクラス名はインターフェイス名 1、インターフェイス名 2、...

クラスを継承してインターフェイスを実装します同時に:

クラスは親クラスを継承し、同時にインターフェイスを実装します クラス クラス名は親クラス名を拡張します インターフェイス名を実装します

7. 抽象クラスの違いそして、interface

Interface は、インターフェイスに抽象メソッドのみが含まれ、メンバー属性が含まれない特別な抽象クラスです。クラスがインターフェイスを実装する場合、インターフェイス内のすべてのメソッドを完全に実装する必要があります。

クラスが抽象クラスを継承 (拡張) する場合、使用する必要がある抽象メソッドを書き直すだけで済みます。抽象クラスは単一の継承のみを持つことができますが、インターフェイスには複数の継承があり、インターフェイスのクラスの実装にも複数の実装があります。

以上がPHP抽象クラスの役割は何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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