|
クラスの抽象化
PHP には、抽象クラス、抽象メソッド、抽象プロパティがあります。
abstract として定義された抽象クラスのインスタンスを生成することはできず、
1つ以上の抽象メソッドや抽象プロパティを含むクラスは抽象クラスでなければいけません。
abstract として定義されたメソッドは、そのメソッドのシグネチャと public または protected のアクセス権を宣言するのみで、
実装を定義することはできません。抽象プロパティは、
抽象クラスから継承する際、親クラスの宣言で abstract としてマークされた 全てのメソッドは、子クラスで定義されなければなりません。加えて、 オブジェクトの継承 と シグネチャの互換性に関するルール に従わなければいけません。 PHP 8.4 から、抽象クラスは public または protected の抽象プロパティを宣言できるようになりました。 protected な抽象プロパティは、protected または public のスコープから読み書き可能なプロパティにより 要件が満たされます。 抽象プロパティは、通常のプロパティによって、または 必要な操作に対応した フック を定義したプロパティにより要件が満たされます。 例1 抽象メソッドの例
上の例の出力は以下となります。 ConcreteClass1 FOO_ConcreteClass1 ConcreteClass2 FOO_ConcreteClass2 例2 抽象メソッドの例
上の例の出力は以下となります。 Mr. Pacman Mrs. Pacwoman 例3 抽象プロパティの例
抽象プロパティにはフックを実装できます。
前の例のように、 例4 抽象プロパティの例
|