/*
+---------------------------------------------- -- ----------------------------------+
| = この記事は Haohappy<
| = 不必要なトラブルを避けるため、転載はご遠慮ください
|すべての PHP 愛好家が一緒に進歩することを願っています
| = PHP5 Research Center: http://blog.csdn.net/haohappy2004
+--------- ------ -------------------------------------------- ------ ---+
*/
セクション 10 -- 抽象メソッドと抽象クラス
オブジェクト指向プログラムは、クラスの階層構造を通じて構築されます。PHP などの単一継承言語では、クラスの継承が行われます。ルートクラスには 1 つまたは複数のサブクラスがあり、各サブクラスは 1 つまたは複数の下位レベルのサブクラスを継承します。適切に設計されたシステムでは、それぞれのルート クラスが異なる機能を実装することがあります。アプリケーション コードがルート クラスで動作するように設計されている場合、
抽象メソッドは、 のようなプレースホルダーです。サブクラス内の一般メソッド (場所を占めますが機能しません)。これは一般メソッドとは異なります。クラス内に 1 つ以上の抽象メソッドがある場合、このクラスは になります。抽象クラスをインスタンス化することはできません。抽象クラスを継承してからサブクラスをインスタンス化する必要があります。すべての抽象メソッドをオーバーライドすると、サブクラスは通常のクラスになります。オーバーライドされていない場合、サブクラスは抽象メソッドのままです。クラスに抽象メソッドが含まれている場合は (たとえ 1 つしか存在しない場合でも)、クラス内でキーワードの前に抽象メソッドを宣言する構文を使用する必要があります。一般的なメソッドの宣言とは異なります。抽象メソッドには、一般的なメソッドのように中括弧 {} で囲まれた本体がなく、セミコロン; で終わります。
例 6.13 では、 getArea メソッドを含むクラス Shape を定義しました。しかし、形状が分からなければ図形の面積を決定することは不可能であるため、getArea メソッドを抽象メソッドとして宣言しました。ただし、Shape オブジェクトをインスタンス化することはできますが、それを継承したり、式で使用したりすることはできます。例 6.13 で説明します。
抽象メソッドのみを含むクラスを作成する場合、PHP にはインターフェイスがあり、Word のキーを実装します。たとえば、myClass を実装して myIterface を作成することもできます。
/ *注:
2 つのメソッドは次のとおりです。
1. } (aaa には抽象メソッドのみがあり、一般メソッドはないことに注意してください)
class bbb extends aaa{} (bbb の aaa の抽象メソッドをオーバーライドします)
2. インターフェース aaa{}
class bbbimplements aaa{} ( bbb の aaa の抽象メソッド)
*/
リスト 6.13 抽象クラス
コードをコピーします