扩展类和未定义变量-PHP
Square和Rectangle是扩展抽象类ShapeClass的类,它们定义自己的Area方法扩展类和未定义变量-PHP,php,Php,Square和Rectangle是扩展抽象类ShapeClass的类,它们定义自己的Area方法 abstract class ShapesClass { // Force Extending class to define this method abstract public function Area(); } class Square extends ShapesClass { private $side = 0;
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();
我在侧面、长度和宽度上得到了未定义的变量错误。
这三个变量不是都有默认值,而且也是由构造函数设置的。您实际上想将它们称为
$this->foo
function __construct($a,$b)
{
$this->length = $a;
$this->width = $b;
}
基本上,
$foo
就像一个局部变量,作用域为当前方法<代码>$this->foo的作用类似于实例变量,它在类中的任何位置都可用。在您的代码中,每当我们为任何类创建变量时,我们都可以仅在类引用的方法内部调用它们,即$this
此外,在php中,我们可以使用var定义变量,有public、protected和private关键字来定义任何变量
因此,您可以使用以下代码更新您的代码
abstract class ShapesClass
{
// Force Extending class to define this method
abstract public function Area();
}
class Square extends ShapesClass
{
private $side = 0;
function __construct($n)
{
$this->side = $n;
}
function Area()
{
echo $this->side * $this->side;
}
}
class Rectangle extends ShapesClass {
private $length = 0;
private $width = 0;
function __construct($a,$b)
{
$this->length = $a;
$this->width = $b;
}
function Area()
{
echo $this->length * $this->width;
}
}
$listShapes = array();
$listShapes[0] = new Square(3);
$listShapes[1] = new Rectangle(3,4);
$listShapes[0]->Area();
$listShapes[1]->Area();