我试图从另一个名为square function area的类调用一个函数到cuboid类。
abstract class Shapes
{
protected $name;
protected $colour;
function __construct($n, $c)
{
$this->name = $n;
$this->colour = $c;
}
三江源!
答案 0 :(得分:0)
首先:至少你应该修复这个方法:
function callclassA() {
$area1=0;
$classA = new Square();
$area1 = $area1 + $classA->area();
}
这并不意味着整体会起作用,但至少你不会试图调用非对象的方法。
第二,callclassA()方法正在创建并填充变量,但它没有返回任何内容,并且它不会将结果保存在类变量中。尝试像
这样的东西会更好class Cuboid extends Shapes
{
private $square=null;
private $area=null;
function __construct($n, $c, $s, $ns)
{
parent::__construct($n, $c);
$this->square=new Square("Square", $c, $s, $ns);
$this->area = $this->square->area();
}
public function area()
{
return (6* $this->area);
}
public function perimeter()
{
return (9* $this->area);
}
}
第三:你确定长方体的周长是方形面积的9倍吗?不应该是方形周长的东西吗?
答案 1 :(得分:0)
独立课程不应该分享数据,不可能以任何理智的方式进行。相反,提供一个适配器方法,从正方形转换为长方体:
class Square {
protected $s;
...
public function getSideLength() {
return $this->s;
}
}
class Cuboid {
...
public static function fromSquare(Square $square) {
return new static($square->getSideLength());
}
}
$square = new Square(...);
$cube = Cuboid::fromSquare($square);
您的代码太复杂,无法对其进行详细修改,但这有可能让您有所了解。