分类分类
关注+2004-10-07作者:蓝点
//abstract root class 抽象根类
abstract class Shape
{
abstract function getArea(); file://定义一个抽象方法
}
//abstract child class 抽象子类
abstract class Polygon extends Shape file://多边形
{
abstract function getNumberOfSides();
}
//concrete class 实体类 三角形类
class Triangle extends Polygon
{
public $base;
public $height;
public function getArea() file://覆写计算面积方法
{
return(($this->base * $this->height)/2);
}
public function getNumberOfSides() file://覆写边数统计方法
{
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(); file://建立形状的集合,放入数组
//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) file://如果$s是Shape类的实例
{
print("Area: " . $s->getArea() .
"
n");
}
if($s instanceof Polygon)
{
print("Sides: " .
$s->getNumberOfSides() .
"
n");
}
if($s instanceof Color)
{
print("Color: $s->name
n");
}
print("
n");
}
?>
相关文章
更多+相同厂商
热门推荐
点击查看更多
点击查看更多
点击查看更多
说两句网友评论