抽象クラスは、問題領域の分析と設計から派生した抽象的な概念を表すためによく使用されます。これらは、見た目は異なっていても本質的には同じである一連の特定の概念を抽象化したものです。
#抽象クラスは不完全です。基本クラスとしてのみ使用できます。オブジェクト指向のアプローチでは、抽象クラスは主に型を隠し、グローバル変数として機能するために使用されます。 (推奨学習: PHP ビデオ チュートリアル )
PHP 5 は、抽象クラスと抽象メソッドをサポートしています。抽象として定義されたクラスはインスタンス化できません。クラス内の少なくとも 1 つのメソッドが抽象宣言されている場合は、クラスを抽象宣言する必要があります。抽象として定義されたメソッドは、その呼び出しメソッド (パラメーター) を宣言するだけであり、その特定の関数の実装を定義することはできません。
抽象クラスを継承する場合、サブクラスは親クラス内のすべての抽象メソッドを定義する必要があり、さらに、これらのメソッドのアクセス制御は親クラスと同じ (またはより緩和された) ものでなければなりません。
たとえば、抽象メソッドが protected として宣言されている場合、サブクラスに実装されているメソッドは protected または public として宣言する必要があり、private として定義することはできません。
さらに、メソッドの呼び出し方法が一致している必要があります。つまり、必要なパラメータの型と数が一致している必要があります。
たとえば、サブクラスがオプションのパラメーターを定義しているが、それが親クラスの抽象メソッドの宣言に含まれていない場合、2 つの宣言の間に競合はありません。
これは、PHP 5.4 以降のコンストラクターにも当てはまります。 PHP 5.4 より前のコンストラクター宣言は異なる可能性があります。
抽象クラスの例
<?php abstract class AbstractClass { // 强制要求子类定义这些方法 abstract protected function getValue(); abstract protected function prefixValue($prefix); // 普通方法(非抽象方法) public function printOut() { print $this->getValue() . "\n"; } } class ConcreteClass1 extends AbstractClass { protected function getValue() { return "ConcreteClass1"; } public function prefixValue($prefix) { return "{$prefix}ConcreteClass1"; } } class ConcreteClass2 extends AbstractClass { public function getValue() { return "ConcreteClass2"; } public function prefixValue($prefix) { return "{$prefix}ConcreteClass2"; } } $class1 = new ConcreteClass1; $class1->printOut(); echo $class1->prefixValue('FOO_') ."\n"; $class2 = new ConcreteClass2; $class2->printOut(); echo $class2->prefixValue('FOO_') ."\n"; ?>
上記のルーチンは出力します:
ConcreteClass1 FOO_ConcreteClass1 ConcreteClass2 FOO_ConcreteClass2
以上がPHP抽象クラスの用途は何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。