【发布时间】:2017-07-11 09:36:20
【问题描述】:
我不明白为什么下面的代码有效。 STEALTH 不是在子类中重新定义...尽管它在父类中声明为 const 吗?仅供参考,我的印象是const 阻止了变量被重新定义!
class Person {
const STEALTH = "MINIMUM";
}
class Ninja extends Person {
const STEALTH = "MAXIMUM";
}
echo Ninja::STEALTH; // prints out 'MAXIMUM'
请注意,我不是在询问范围解析运算符。我想我理解打印出Ninja::STEALTH 和Person::STEALTH 之间的区别。我很惊讶 ninja 能够继承一个 const 变量,但又能够重新定义它!
【问题讨论】:
-
谁说它被重新定义了?
-
Person::STEALTH和Ninja::STEALTH显然是两个不同的东西…… -
@deceze 是的,我可以看到。我不是在询问范围解析运算符。我很惊讶 ninja 继承了 person 却能够重新定义
STEALTH。 -
这里没有重新定义。您有 两个 不同的常量。