もちろん、適切に設計されたシステムでは、アプリケーション コードがルート クラスで動作するように設計されている場合、各ルート クラスに便利なインターフェイスが必要です。 、ルートクラスから継承する任意のサブクラスでも動作します。
抽象メソッドは、サブクラスの一般的なメソッドと同様のプレースホルダーです (スペースを占有しますが、機能しません)。通常のメソッドとは異なります。コードが存在しない場合。クラス内にさらに多くの抽象メソッドが存在すると、そのクラスは抽象クラスになります。抽象クラスを継承してからサブクラスをインスタンス化する必要があります。すべての抽象メソッドをオーバーライドしない場合、サブクラスは通常のクラスになります。クラスに抽象メソッドが含まれている場合は、そのクラスを宣言する必要があります。は abstract であり、class キーワードの前に abstract を追加します。
抽象メソッドを宣言する構文は、一般的なメソッドの宣言とは異なります。主要部分は中括弧 {} で囲まれ、セミコロンで終わります。以下のプログラムファイルでは、getArea メソッドを含むクラス Shape を定義していますが、実際には getArea メソッドを抽象として宣言しているため、図形の領域を決定することはできません。 Shape オブジェクトですが、例 6.13 のように、それを継承したり、式で使用したりすることができます。この状況を説明するために、interface およびimplements キーワードを定義します。 PHP では、クラス定義を説明するために、抽象クラスの代わりにインターフェイスを使用したり、 myIterface を実装したりすることができます。コード
コードをコピー
コードは次のとおりです:/*注: 2 つのメソッドは以下を参照します:
1. 抽象クラス aaa{} (aaa には抽象メソッドのみがあり、一般的なメソッドはないことに注意してください)メソッド)class bbb extends aaa{} (bbb の aaa の抽象メソッドを上書き)
2. インターフェイス aaa{}
class bbbimplements aaa {} (bbb の aaa の抽象メソッドをオーバーライド)
*/
php
//抽象ルートクラス 抽象ルートクラス
抽象クラス Shape
{
abstract function getArea() //抽象メソッドを定義します
}
//抽象子クラス 抽象サブクラス
抽象クラス Polygon extends Shape //Polygon
{
抽象関数 getNumberOfSides();
}
//具象クラス エンティティクラス 三角形クラス
クラス Triangle extends Polygon
{
public $height;
public function getArea() //面積計算メソッドをオーバーライドします
{
return(($this->base * $this->height)/2);
}
public function getNumberOfSides () //エッジカウントメソッドをオーバーライドします
{
}
}
/ /concrete クラス エンティティ クラス 四角形
クラス Rectangle は Polygon を拡張します
{
public $width;
public function getArea()
{
return($this->width * $this->height); }
public function getNumberOfSides()
{
return(4);
}
}
//具象クラス エンティティクラス Circle
class Circle extends Shape
{
public $radius
{
return( pi() * $this->radius * $this->radius);
}
}
/ /concrete ルート クラスはカラー クラスを定義します
class Color
{
public $name
}
$myCollection = array (); // 図形のコレクションを作成して配列に入れます
$r = new Rectangle ;
$r->height = 7; $myCollection[] = $r;
//三角形を作成します
$t->base = 4; myCollection[] = $t;
//円を作成します
$c->radius = 3;
$myCollection[] = $c; c);
//色を作成します
$c = 新しい色
$myCollection[] = $c; $s)
{
if($s instanceof Shape) print("Area: ".$s->getArea() ."
n"); // $s が Shape クラスのインスタンスの場合
if($s インスタンスオブポリゴン) print("サイド: ".$s->getNumberOfSides()."
n ");
if($s インスタンスオブカラー) print("カラー:".$s ->name."
n");
print("
n")
実行結果:
面積: 4
面積: 10
サイド: 3
エリア: 28.274333882308
カラー: ブルー
上記では、具体的なプログラムを通じて、抽象的な側面も含めて PHP の抽象クラスを理解することができました。これが、PHP チュートリアルに興味のある友人にとって役立つことを願っています。