PHPでは抽象メソッドを定義できますか?

青灯夜游
リリース: 2023-03-15 16:12:01
オリジナル
1850 人が閲覧しました

php では抽象メソッドを定義できます。クラスの継承を容易にするために、PHP5 では抽象メソッドの概念が導入されています。抽象メソッドはメソッド本体のないメソッドです。PHP で抽象メソッドを宣言する場合は、「abstract」キーワード修飾を使用し、構文は「abstract アクセス許可修飾子関数」です。メソッド名(パラメータリスト) );"。

PHPでは抽象メソッドを定義できますか?

#このチュートリアルの動作環境: Windows7 システム、PHP7.1 バージョン、DELL G3 コンピューター

php で抽象メソッドを定義できます。

オブジェクト指向言語では、クラスは 1 つ以上のサブクラスを持つことができ、各クラスには外部コードがアクセスするためのエントリ ポイントとして少なくとも 1 つのパブリック メソッドが必要です。

抽象クラスと抽象メソッドは、主にクラスの継承を容易にするために PHP5 で導入された概念です。

#抽象メソッドと抽象メソッド抽象メソッドとは、メソッド本体のないメソッドです。いわゆるメソッド本体なしとは、 , メソッドを宣言する場合、中括弧 { } とその内容は使用せず、メソッド名の直後にセミコロンを追加します。また、抽象メソッドを宣言する場合は「abstract」キーワードを使用してください。形式は次のとおりです。

abstract 访问权限修饰符 function 方法名1(参数列表);
abstract 访问权限修饰符 function 方法名2(参数列表);
ログイン後にコピー

例:

abstract function fun1();
abstract function fun2();
ログイン後にコピー

上記の例は、メソッド本体が変更されていない抽象メソッド "fun1()" および "fun2" です。 "abstract" ()"、抽象メソッドの後にセミコロンがあることを忘れないでください;

それでは、抽象クラスとは何でしょうか?

クラス内のメソッドが抽象メソッドである限り、そのクラスは抽象クラスとして定義する必要があり、その抽象クラスも「abstract」キーワードで変更する必要があります。抽象クラスやメンバ属性では抽象ではありませんが、1つのメソッドが抽象である限り、そのクラスを抽象クラスとして宣言し、「abstract」で修飾する必要があります。

abstract class Demo
{

    var $test;

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

    function fun3(){
        ...
    }
}
ログイン後にコピー

上記の例では、抽象クラス「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(); //子类可以实例化对象,因为实现了父类中所有抽象方法
?>
ログイン後にコピー

推奨学習: 「

PHP ビデオ チュートリアル

以上がPHPでは抽象メソッドを定義できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
関連するチュートリアル
人気のおすすめ
最新のコース
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート