说我有一个父类
class parentClass {
public function myMethod() {
echo "parent - myMethod was called.";
}
}
和以下子类
class childClass extends parentClass {
public function callThroughColons() {
parent::myMethod();
}
public function callThroughArrow() {
$this->myMethod();
}
}
$myVar = new childClass();
$myVar->callThroughColons();
$myVar->callThroughArrow();
在继承类中使用两种不同的方式调用 myMethod() 有什么区别?我能想到的唯一区别是 childClass 是否用他自己的版本覆盖了 myMethod() ,但还有其他显着差异吗?
我认为双冒号运算符 (::) 应该只用于调用静态方法,但在调用 $myVar->callThroughColons() 时我没有收到任何警告,即使启用了 E_STRICT 和 E_ALL。这是为什么?
谢谢你。