第十節--抽象方法和抽象類 <?php //abstract root class 抽象根類 abstract class Shape { abstract function getArea(); //定義一個抽象方法 } //abstract child class 抽象子類 abstract class Polygon extends Shape //多邊形 { abstract function getNumberOfSides(); } //concrete class 實體類 三角形類 class Triangle extends Polygon { public $base; public $height; public function getArea() //覆寫計算面積方法 { return(($this->base * $this->height)/2); } public function getNumberOfSides() //覆寫邊數統計方法 { return(3); } } //concrete class 實體類四邊形 class Rectangle extends Polygon { public $width; public $height; public function getArea() { return($this->width * $this->height); } public function getNumberOfSides() { return(4); } } //concrete class 實體類 圓形 class Circle extends Shape { public $radius; public function getArea() { return(pi() * $this->radius * $this->radius); } } //concrete root class 定義一個顏色類 class Color { public $name; } $myCollection = array(); //建立形狀的集合,放入數組 //make a rectangle $r = new Rectangle; $r->width = 5; $r->height = 7; $myCollection[] = $r; unset($r); //make a triangle $t = new Triangle; $t->base = 4; $t->height = 5; $myCollection[] = $t; unset($t); //make a circle $c = new Circle; $c->radius = 3; $myCollection[] = $c; unset($c); //make a color $c = new Color; $c->name = "blue"; $myCollection[] = $c; unset($c); foreach($myCollection as $s) { if($s instanceof Shape) //如果$s是Shape類的實例 { print("Area: " . $s->getArea() . "<br>\n"); } if($s instanceof Polygon) { print("Sides: " . $s->getNumberOfSides() . "<br>\n"); } if($s instanceof Color) { print("Color: $s->name<br>\n"); } print("<br>\n"); } ?> |
溫馨提示:喜歡本站的話,請收藏一下本站!