首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当类继承类时,方法重写是如何工作的?

当类继承类时,方法重写是如何工作的?
EN

Stack Overflow用户
提问于 2018-09-04 01:36:36
回答 1查看 38关注 0票数 1

让我们记住这两个漂亮的类!

代码语言:javascript
运行
复制
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::testPrivatenFoo::testPublicn"!为什么?看到这个输出,我是怎么想的?公共方法会被重载,私有方法不会被重载。

好的,我期望ShowBar()会输出"Bar::testPrivaten“,它会输出"Bar::testPublicn",很好。

好的,我期望ShowFoo()会输出"Bar::testPrivaten“,但实际上输出的是"Foo::testPublicn”。嗯,为什么?

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52154212

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档