PHP是单重继承的 如果你建立了一个只有抽象方法的类,你就定义了一个接口(interface). PHP中有interface 和implements关键字. 你可以用interface来代替抽象类, 用implements来代替extends来说明你的类定义或使用一个接口/*注: 两种方法即指: 1. abstract class aaa{} (注意aaa中只有抽象方法,没有一般方法) class bbb extends aaa{} (在bbb中覆写aaa中的抽象方法) 2. interface aaa{} class bbb implements aaa{} (在bbb中覆写aaa中的抽象方法) */ 下面有一个网上的例子
<?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"); } ?>
汗。你们的php是什么版本的?手册在哪里下载的?为什么我的手册里没有这种东西?
and or xor __FILE__ exception php_user_filter __LINE__ array() as break case cfunction class const continue declare default die() do echo() else elseif empty() enddeclare endfor endforeach endif endswitch endwhile eval exit() extends for foreach function global if include() include_once() isset() list() new old_function print() require() require_once() return() static switch unset() use var while __FUNCTION__ __CLASS__ __METHOD__ 这是我手册上的所有关键字列表了。没有abstract呢……
如果你建立了一个只有抽象方法的类,你就定义了一个接口(interface).
PHP中有interface 和implements关键字. 你可以用interface来代替抽象类, 用implements来代替extends来说明你的类定义或使用一个接口/*注:
两种方法即指:
1. abstract class aaa{} (注意aaa中只有抽象方法,没有一般方法)
class bbb extends aaa{} (在bbb中覆写aaa中的抽象方法)
2. interface aaa{}
class bbb implements aaa{} (在bbb中覆写aaa中的抽象方法)
*/
下面有一个网上的例子
//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");
} ?>
__LINE__ array() as break case
cfunction class const continue declare
default die() do echo() else
elseif empty() enddeclare endfor endforeach
endif endswitch endwhile eval exit()
extends for foreach function global
if include() include_once() isset() list()
new old_function print() require() require_once()
return() static switch unset() use
var while __FUNCTION__ __CLASS__ __METHOD__ 这是我手册上的所有关键字列表了。没有abstract呢……