ホームページ > バックエンド開発 > PHPチュートリアル > 特定のプログラムを通じて PHP の抽象クラスを理解する_PHP チュートリアル

特定のプログラムを通じて PHP の抽象クラスを理解する_PHP チュートリアル

WBOY
リリース: 2016-07-21 15:41:25
オリジナル
854 人が閲覧しました

もちろん、適切に設計されたシステムでは、アプリケーション コードがルート クラスで動作するように設計されている場合、各ルート クラスに便利なインターフェイスが必要です。

抽象メソッドは、サブクラスの一般的なメソッドと同様のプレースホルダーです (領域を占有しますが機能しません)。これは、一般的なメソッドとは異なります。コードがない場合。 1 つのクラス内に複数の抽象メソッドが存在する場合、そのクラスは抽象クラスになります。抽象クラスを継承してからサブクラスをインスタンス化する必要があります。すべての抽象メソッドをオーバーライドすると、サブクラスは通常のクラスになります。すべてのメソッドをオーバーライドしない場合でも、サブクラスは抽象メソッドのままになります。クラスに抽象メソッドが含まれる場合は、そのクラスを宣言する必要があります。はabstractで、classキーワードの前にabstractを追加します。

抽象メソッドを宣言する構文は、通常のメソッドのように中括弧{}で囲まれたものはありません。
次のプログラム ファイルでは、getArea メソッドを含むクラス Shape を定義していますが、形状が不明であるため、実際には getArea メソッドを抽象として宣言しています。 Shape オブジェクトをインスタンス化することはできませんが、例 6.13 のように、Shape オブジェクトを作成する場合は、インターフェイスを定義します。この状況を例に挙げると、PHP には、interface およびimplements キーワードがあり、クラス定義を説明するには、たとえば、myClass に myIterface を実装することができます。

コード



コードをコピー

コードは次のとおりです: /*注: 2 種類のメソッドを参照します:
1. 抽象クラス aaa{} aaa には抽象メソッドのみがあり、一般メソッドはありません)
class bbb extends aaa{} (aaa の抽象メソッドを bbb に上書きします)
2. インターフェース aaa{}
class bbbimplements aaa{} (aaa の抽象メソッドをオーバーライドします) in bbb)
*/

//abstract root class abstract root class
abstract class Shape
{
abstract function getArea() //abstract メソッドを定義する
}

//abstract child class abstract subclass
abstract class Polygon extends Shape //Polygon
{
abstract function getNumberOfSides();
}
//concrete クラス エンティティ クラス三角 class
class Triangle extends Polygon
{
public $height; getArea() //面積計算メソッドをオーバーライドします
{
return(($this->base * $this->height)/2)
}
public function getNumberOfSides() //サイドカウントメソッドをオーバーライドします
{
return(3);
}
}
//具象クラス エンティティ クラス 四角形
クラス Rectangle extends Polygon
{
public $width;
public function getArea()
{
return($this- >width * $this->height);
}
public function getNumberOfSides()
{
return(4);
}
}
//concrete class エンティティクラス Circle
class Circle extends Shape
{
public $ radius;
public function getArea()
{
return(pi() * $this->radius * $this->radius) ;
}
}
//具体的なルートクラスはカラークラスを定義します
class Color
{
public $name;
}
$myCollection = array(); // 図形のコレクションを作成し、それを配列に入れます
$r = new Rectangle
$r->width = 5;
$r->高さ = 7;
$myCollection[] = $r;
$t = 新しい三角形を作成します。 ;
$t->高さ = 5;
$myCollection[] = $t;
//円を作成します
$c->半径 = 3;
$myCollection[] = $c;
unset($c);
//色を作成します
$c-> ;name = "blue";
unset($c);
foreach($myCollection as $s)
{
if($s instanceof Shape) print("Area: ".$ s->getArea()."
n") ; // $s が Shape クラスのインスタンスの場合
if($s instanceof Polygon) print("Sides: ".$s->getNumberOfSides() ."
n"); s インスタンスのカラー) print("カラー:".$s->name."
n");
}
?>
実行結果:
面積: 35
側面: 4
面積: 10
側面: 3
面積: 28.274333882308
色:青

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/321175.html技術記事もちろん、適切に設計されたシステムでは、複数のルート クラスがアプリケーション コードで使用できる便利なインターフェイスを備えている必要があります。
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート