ホームページ >バックエンド開発 >PHPチュートリアル >PHPクラスの抽象化
オブジェクト指向プログラミングでは、抽象クラスはインスタンス化できるクラスです。つまり、そのようなクラスのオブジェクトを宣言することはできません。 PHP はバージョン 5.0 から abstarct クラスの概念をサポートしています。
abstract キーワードで定義されたクラスは抽象クラスになります。さらに、少なくとも 1 つの抽象メソッドを含むクラスも抽象とみなされます。 ##
<?php class testclass{ // } ?>抽象メソッド抽象メソッドは、そのシグネチャ、つまりその可視性、引数、および型ヒントを含む戻り値の型を宣言するだけであり、機能はありません。このような抽象クラスを継承するクラスは、すべての抽象メソッドをオーバーライドする (定義を提供する) 必要があります。子クラスの対応するメソッドは、親クラスと同じシグネチャを保持する必要があります。子クラスがこの条件を満たさない場合、PHP パーサーは例外をスローします。抽象クラスを拡張したクラスはインスタンス化できるため、具象クラスと呼ばれます。次の例では、親クラスに 2 つの抽象メソッドがあり、そのうちの 1 つだけが子クラスで再定義されます。これにより、次のようなエラーが発生します。 -Example Live Demo
$a=new testclass(); PHP Fatal error: Uncaught Error: Cannot instantiate abstract class testclassOutput以下はエラー メッセージです
<?php abstract class testclass{ abstract function test1(); abstract function hello(); } class myclass extends testclass{ function test1(){ echo "Overrides parent test method"; } } $a=new myclass(); ?>Abstract メソッド引数付き #引数付きで抽象メソッドが定義されている場合は、子クラスで同じ数の引数を使用してオーバーライドする必要があります。次の例では、親クラスの抽象メソッドには 2 つの引数があります。子クラスも 2 つの引数を持つ同じ関数を定義しますExampleライブデモ
PHP Fatal error: Class myclass contains 1 abstract method and must therefore be declared abstract or implement the remaining methods (testclass::hello)出力これは以下の出力 -
<?php abstract class testclass{ abstract function hello($name, $age); } class myclass extends testclass{ function hello($name, $age){ echo "My name is $name and my age is $age"; } } $a=new myclass(); $a->hello("Ravi",20); ?>##を生成します#
以上がPHPクラスの抽象化の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。