セクション 10 -- 抽象メソッドと抽象クラス

WBOY
リリース: 2016-06-13 12:36:57
オリジナル
788 人が閲覧しました

/*
------------------------------------------- ----------------------------------
| この記事は Haohappy<
| = 章のクラスとオブジェクトのメモ
| = 不要なトラブルを避けるため、転載しないでください。批判や修正は大歓迎です。私たちはすべての PHP 愛好家とともに進歩していきたいと考えています。
= PHP5 Research Center: http://blog.csdn.net/haohappy2004
--------- ----- -------------------------------------- ----- ---------------
*/
セクション 10 - 抽象メソッドと抽象クラス
オブジェクト指向プログラムは、次の階層構造を通じて構築されます。 PHP などの継承が多い言語では、クラスの継承はツリー状であり、当然のことながら、ルート クラスには 1 つ以上の下位レベルのサブクラスが継承されます。適切に設計されたシステムでは、アプリケーション コードがルート クラスで動作するように設計されている場合、各ルート クラスに便利なインターフェイスが必要です。また、ルート クラスから継承する任意のサブクラスと連携することもできます。
抽象メソッドは、サブクラスの一般メソッドと同様のプレースホルダーであり (領域を占有しますが機能しません)、コードが存在しない限り、一般メソッドと同じです。 1 つ以上の抽象メソッドがクラス内に存在する場合、そのクラスは抽象クラスになります。抽象クラスを継承してからサブクラスをインスタンス化する必要があります。また、抽象クラスをサブクラスのテンプレートとして考えることもできます。
すべての抽象メソッドをオーバーライドすると、サブクラスは通常のクラスになります。すべてのメソッドをオーバーライドしない場合でも、クラスに抽象メソッドが含まれている場合は、サブクラスは抽象メソッドのままになります。 class キーワードの前に abstract を追加して、クラスが抽象であることを宣言する必要があります。
抽象メソッドを宣言する構文は、一般メソッドの宣言とは異なります。本文部分は中括弧 { で囲まれています。
例 6.13 では、getArea メソッドを含むクラス Shape を定義しましたが、形状が不明であるため、図の面積を決定することはできません。 getArea メソッドを抽象として宣言しました。Shape オブジェクトをインスタンス化することはできませんが、例 6.13 のように、それを継承したり、式で使用したりできます。
抽象のみのメソッド Method クラスを作成する場合は、インターフェイスを定義します。 (インターフェース) この状況を説明するために、PHP にはインターフェースと実装のキーワードがあり、抽象クラスの代わりにインターフェースを使用し、クラス定義を説明するか、myClass の実装を使用できます。 myIterface。これら 2 つのメソッドは個人の好みに応じて選択できます。
/*注:
2 つのメソッドは次のものを参照します。
1. aaa には抽象メソッドしかないことに注意してください。一般メソッドはありません)
class bbb extends aaa{} (bbb の aaa の抽象メソッドを上書きします)
2. インターフェース aaa{}
class bbbimplements aaa {} (bbb の aaa の抽象メソッドをオーバーライドします)
*/
リスト 6.13 抽象クラス


コードをコピー コードは次のとおりです。

//抽象ルートクラス 抽象ルートクラス
抽象クラス Shape
{
抽象関数 getArea() // 抽象メソッドを定義します
}
//抽象子クラス 抽象クラス Polygon extends Shape //Polygon
{
抽象関数 getNumberOfSides();
class Triangle extends Polygon
{ public $base; > public function getArea() //面積計算メソッドをオーバーライドします
{ return(($this- & gt; base*$ this- & gt; height)/2)
public function getnumberofsides ()//エッジを上書きする統計的方法
}
}> > //具体的なクラス エンティティ クラス Circle
class Circle extends Shape
{
public $radius()
pi() * $this->radius * $this ->radius);
} }
}
//具体的なルートクラスはカラークラスを定義します > Public $name;
$myCollection = array(); //図形のコレクションを作成し、配列に入れます
//四角形を作成します
$r = new Rectangle
$r->width = 5;
$r->height = 7;
$myCollection[] = $r;
// 三角形を作成します
$t = 新しい三角形;
$t->base = 4;
$t->height = 5;
$t-> unset($t);円を作成します
$c = 新しい円;
$myCollection[] = $c;
//make色
$c = 新しい色;
$c->name = "青";
unset($c); $myCollection as $s)
{
if($s instanceof Shape) //$s が Shape クラスのインスタンスの場合
{
print("Area: ". $s-> getArea().

$s->getNumberOfSides( ) . $s->name
n ");
}
print("
n");
}
?>

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!