【发布时间】:2019-02-08 18:34:49
【问题描述】:
让我们记住这两个美丽的课程!
class Bar
{
public function test() {
echo "<br>";
$this->testPrivate();
$this->testPublic();
}
public function testPublic() {
echo "Bar::testPublicn";
}
private function testPrivate() {
echo "Bar::testPrivaten";
}
public function ShowBar() {
$this->testPrivate();
}
}
class Foo extends Bar
{
public function testPublic() {
echo "Foo::testPublicn";
}
private function testPrivate() {
echo "Foo::testPrivaten";
}
public function ShowFoo() {
$this->testPrivate();
}
}
$myFoo = new Foo();
$myFoo->test();
echo "<br>";
$myFoo->ShowBar();
echo "<br>";
$myFoo->ShowFoo();
有人愿意解释什么是输出值以及为什么?
我正在关注此代码... 它打印“Bar::testPrivateFoo::testPublicn”!为什么? 我怎么想看到这个输出? 公共方法重载,私有方法不重载。
好的,我希望 ShowBar() 会输出“Bar::testPrivate” 它输出“Bar::testPublicn”,太棒了。
好的,所以我希望 ShowFoo() 会输出“Bar::testPrivate” 但它实际上输出“Foo::testPublicn”。 嗯,为什么?
【问题讨论】:
-
什么是 3rd Foo 类?您正在搞乱私有和公共方法。只有公共和受保护的方法可以被覆盖,而不是私有的。此外,您在这里将其称为重载,但您尝试过的是覆盖。
-
我删除了第 3 个 Foo 类。对不起,我刚刚编辑了条款。
标签: php class object inheritance overriding