ホームページ > バックエンド開発 > PHPの問題 > PHPの抽象クラスと抽象メソッドとは何ですか

PHPの抽象クラスと抽象メソッドとは何ですか

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

抽象メソッドとは、メソッド本体のないメソッドを指します。いわゆるメソッド本体なしとは、メソッドを宣言するときに中かっこ "{}" とその内容がなく、セミコロンが追加されることを意味します。メソッド名の直後に入力します。クラス内のメソッドが抽象メソッドである限り、クラスは抽象クラスとして定義され、「abstract」キーワードを使用して変更される必要があります。

PHPの抽象クラスと抽象メソッドとは何ですか

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

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

1. 抽象メソッド

抽象メソッドはメソッド本体のないメソッドです。いわゆるメソッド本体がないということは、メソッドの宣言時に中かっこがないことを意味します { } とその内容ですが、メソッド名の直後はセミコロンで終わります。また、抽象メソッドを宣言する場合は「abstract」キーワードを使用してください。形式は次のとおりです:

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

2. 抽象クラス

クラス内に抽象メソッドがある限り、このクラスは抽象メソッドとして定義する必要があります。クラス、抽象クラスも、「abstract」キーワードを使用して変更する必要があります。抽象クラスには、抽象メソッドではないメンバー メソッドおよびメンバー プロパティを含めることもできますが、メソッドが抽象クラスであるため、アクセス権限をプライベートにすることはできません(プライベート キーワードで変更)クラスはサブクラスによって継承される必要があります。

次の例は、抽象クラスを定義する方法を示しています。コードは次のとおりです:

abstract class 类名{
    public $name;
    abstract 访问权限修饰符 function 方法名1();
    abstract 访问权限修饰符 function 方法名2();
    访问权限修饰符 function 方法名3(){
        ... ... ;
    }
}
ログイン後にコピー

抽象クラスは、未実装のコンポーネントを含む「半完成」クラスのようなものです。抽象メソッド、したがって、抽象クラスをインスタンス化することはできません。つまり、オブジェクトを作成したり、直接使用したりすることはできません。抽象クラスは「半完成」クラスなので、抽象クラスはどのように使用されるのでしょうか?

抽象クラスは、そのサブクラスのパブリック インターフェイスを定義し、その操作 (一部またはすべて) を実装のためにサブクラスに引き渡すものと考えることができます。抽象クラスは、サブクラスのオーバーロードのテンプレートとして使用されます。抽象クラスの定義は、サブクラスが準拠する必要がある仕様を定義することと同じです。

サブクラスが抽象クラスを継承する場合、サブクラス自身のニーズに従って、抽象クラスに抽象メソッドを実装する必要があります。サブクラスは、親クラスのすべての抽象メソッドを実装する必要があります。そうでない場合、サブクラスにはまだ抽象メソッドが存在するため、サブクラスは依然として抽象クラスであり、オブジェクトとしてインスタンス化できません。

[例] 抽象クラスを定義し、別のクラスでその抽象クラスを継承し、抽象クラスに抽象メソッドを実装します。

<?php
    abstract class Website{
        public $name = &#39;PHP中文网<br>&#39;;
        public $url = &#39;https://www.php.cn/<br>&#39;;
        abstract function title();
        abstract function output();
    }
    class Demo extends Website{
        public function title(){
            echo &#39;抽象类和抽象方法&#39;;
        }
        public function output(){
            echo $this -> name.$this -> url;
        }
    }
    $obj = new Demo();
    $obj -> output();
    $obj -> title();
?>
ログイン後にコピー

実行結果は次のとおりです:

PHP中文网
https://www.php.cn/
抽象类和抽象方法
ログイン後にコピー

さらに、サブクラス内のメンバー メソッドのアクセス許可は、抽象メソッドのアクセス許可と同じにすることはできますが、同じにすることはできないことに注意してください。より厳格に。また、サブクラス内のメンバメソッドのパラメータの数は、抽象メソッドのパラメータの数と同じである必要があります。

推奨学習: 「PHP ビデオ チュートリアル

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

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