[英]PHP inhertience method referencing
<?php
class A {
private function foo() {
echo "baf!<br/>";
}
public function test() {
$this->foo();
}
}
class C extends A {
private function foo() {
echo "bar!<br/>";
}
}
$c = new C();
$c->test(); //Prints baf!
?>
如何使c->test()
打印栏! ? 我期望foo()
将在C
被覆盖并打印出bar! 有人可以向我解释吗?
通过同时保护这两种方法,您将获得所需的结果。 原因是在A::test()
,由于private
可见性,它只能将$this->foo()
解析$this->foo()
A::foo()
。 请参阅可见性 。
class A {
protected function foo() {
echo "baf!<br/>";
}
public function test() {
$this->foo();
}
}
class C extends A {
protected function foo() {
echo "bar!<br/>";
}
}
$c = new C();
$c->test(); //Prints bar!
class A {
protected function foo() {
echo "baf!<br/>";
}
public function test() {
$this->foo();
}
}
class C extends A {
protected function foo() {
echo "bar!<br/>";
}
}
$c = new C();
$c->test(); //Prints baf!
只需将foo函数设置为公共或受保护的访问级别即可。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.