【发布时间】:2021-04-19 14:04:39
【问题描述】:
所以我得到了一个抽象类 Bee:
abstract class Bee{
private $name;
private $number;
private $health;
public function __construct() {
}
/**
* Functii set/get.
*/
public function getName() { return $this->name; }
public function setName($value) { $this->name = $value; }
public function getNumber() { return $this->number; }
public function setNumber($value) { $this->number = $value; }
public function getHealth() { return $this->health; }
public function setHealth($value) { $this->health = $value; }
abstract public function hitted(); ///
}
另外 3 个类(Queen、Worker 和 Drone)扩展了 Bee 类
/
**
* Queen.
*/
class Queen extends Bee
{
public function __construct() ///initializarea valorile Queen.
{
$this->setName("Queen");
$this->setHealth(100);
$this->setNumber(1);
}
public function hitted() /// Evenimentele declansate de primirea atacurilor.
{
$this->setHealth($this->getHealth() - 8);
}
}
/**
* Worker.
*/
class Worker extends Bee
{
public function __construct() ///initializarea valorile Worker.
{
$this->setName("Worker");
$this->setHealth(75);
$this->setNumber(5);
}
public function hitted() /// Evenimentele declansate de primirea atacurilor.
{
$this->setHealth($this->getHealth() - 10);
}
}
/**
* Drone.
*/
class Drone extends Bee
{
public function __construct() ///initializarea valorile Drone.
{
$this->setName("Drone");
$this->setHealth(50);
$this->setNumber(8);
}
public function hitted() /// Evenimentele declansate de primirea atacurilor.
{
$this->setHealth($this->getHealth() - 12);
}
}
当我使用以下数据成员声明 Class Swamp 时出现错误:
class Swarm{
public $arr = array();
public $queen = new Queen();
public $worker = new Worker();
public $drone = new Drone();
public function __construct() {
}
}
这是我的错误:
致命错误:常量表达式在 C:\xampp\htdocs\The Bee Game\background.php 在第 93 行
第 93 行在 Swamp 类中:
public $queen = new Queen();
【问题讨论】:
-
将 $queen 留空 (
public $queen;) 并在构造函数中对其进行初始化 ($this->queen = new Queen();)? -
@DefinitelynotRafal - 将其作为答案发布,以便 OP 可以接受它并向其他人展示问题已解决。并为您获得应有的声誉。
-
它甚至不需要属性'this'
-
@GeorgeBusu - 如果从
$this->queen = new Queen();中省略$this,它将不会存储在类属性中,而是作为仅在构造函数内部可用的局部变量。$this不是属性,它是对当前对象的引用。你可以阅读更多关于class properties here和variable scopes here的信息 -
哦……要学的东西太多了。非常感谢! :)