Square和Rectangle是扩展抽象类ShapesClass的类,定义了自己的Area方法.
abstract class ShapesClass
{
// Force Extending class to define this method
abstract public function Area();
}
class Square extends ShapesClass
{
private $side = 0;
function __construct($n)
{
$side = $n;
}
function Area()
{
echo $side * $side;
}
}
class Rectangle extends ShapesClass
{
var $length = 0;
var $width = 0;
function __construct($a,$b)
{
$length = $a;
$width = $b;
}
function Area()
{
echo $length * $width;
}
}
$listShapes = array();
$listShapes[0] = new Square(3);
$listShapes[1] = new Rectangle(3,4);
$listShapes[0]->Area();
$listShapes[1]->Area();
Run Code Online (Sandbox Code Playgroud)
我在侧面,长度和宽度上得到未定义的变量错误.这三个变量不具有默认值,也由构造函数设置.
你实际上想把它们称为 $this->foo
function __construct($a,$b)
{
$this->length = $a;
$this->width = $b;
}
Run Code Online (Sandbox Code Playgroud)
基本上$foo就像本地的,变量的,作用域的当前方法.$this->foo就像一个实例变量,它可以在类中的任何地方使用.