ホームページ  >  記事  >  バックエンド開発  >  PHPクラスの抽象化

PHPクラスの抽象化

WBOY
WBOY転載
2023-08-30 23:17:061460ブラウズ

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 testclass

Output

以下はエラー メッセージです

<?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 サイトの他の関連記事を参照してください。

声明:
この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。