PHP继承$this运算符的用法
我有一个小问题。在PHP手册网站上有一个例子:PHP继承$this运算符的用法,php,inheritance,this,extends,Php,Inheritance,This,Extends,我有一个小问题。在PHP手册网站上有一个例子: class Bar { public function test() { $this->testPrivate(); $this->testPublic(); } public function testPublic() { echo "Bar::testPublic\n"; } private function testPrivate() {
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(); // Bar::testPrivate
// Foo::testPublic
有人能简单地解释一下为什么在一个例子中引用$this指向父方法(私有方法),而在另一个例子中指向子类(公共)中定义的当前方法吗?
这对我来说是不合逻辑的,我希望它在两种情况下都指向子类方法,还是在这两种情况下都指向父类方法
请帮忙 这是因为子类只能访问父类的方法,如果它是
公共的
或受保护的
,而不是私有的
。因此,它求助于自己的私有方法
如果总是要调用当前类的方法,使用
self::
而不是$this->
我猜您没有粘贴第二个示例,因为testPrivate
在子类中被重写,而$myFoo
对象无法访问Bar
类中的testPrivate
。这两个方法都被重写了!?我还不清楚…嗯。。。。运算符self::是用于常量和静态成员的类运算符。我仍然不清楚,因为我希望在一个子类中访问这两个重写的方法。它从超类获取私有,从子类获取公共。也许这是正确的行为??谁知道self::
也可以用于方法。试试看!我在附近玩了一会儿,我想这是因为范围。将#this#与私有#成员#(函数或属性)结合使用并继承的方法仍然被视为超类的成员,无法访问子类的私有成员!另一方面,它可以访问公共和受保护的成员。因为它可以访问子类的私有成员,所以它仍然指向超类中的私有成员。。。差不多吧。如果我使用self::总是将evelute转换为超类!