PHP面向对象编程哎呀问题

时间:2017-02-16 11:37:54

标签: php oop object inheritance

我正在尝试实现类似下面的代码但不能理解一个问题,根据我的理解它应该打印这样的数据:

Foo::testPrivate
Foo::testPublic

但它显示输出为::

Bar::testPrivate 
Foo::testPublic

代码是::

class Bar 
{
    public function test() {
        $this->testPrivate();
        $this->testPublic();
    }

    public function testPublic() {
        echo "Bar::testPublic\n";
    }

    private function testPrivate() {
        echo "Bar::testPrivate\n";
    }
}

class Foo extends Bar 
{
    public function testPublic() {
        echo "Foo::testPublic\n";
    }

    private function testPrivate() {
        echo "Foo::testPrivate\n";
    }
}

$myFoo = new Foo();
$myFoo->test();

有人可以解释一下吗?

1 个答案:

答案 0 :(得分:0)

根据我的理解

  • 显示输出是正确的,因为你是" Foo"然后调用test()函数后面的" Bar"类

  • 在Bar类的test()函数中,调用testPrivate()使用"这个"关键字所以在同一个类中调用该函数,testPrivate()也是私有的,这就是显示结果的原因:

Bar :: testPrivate
Foo :: testPublic

  • 在类中对私有函数testPrivate() {}进行公共函数testPrivate()更改,以显示您接受的结果
  • 进行此更改后的结果是:

<强>富:: testPrivate
Foo :: testPublic