gpt4 book ai didi

php - 难以理解如何在扩展类中声明父类的函数?

转载 作者:可可西里 更新时间:2023-11-01 00:47:37 26 4
gpt4 key购买 nike

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

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();
//Foo::testPublic
//Bar::testPrivate

我很难理解这个输出。有人能给我一个清晰简洁的解释吗?我正在学习 OOP,想知道如何使用扩展来覆盖父类函数。

最佳答案

test() 方法调用了 2 个方法:

  1. testPublic - 它是公开的,因此在 Foo 中被覆盖。所以 Foo::testPublic 被调用
  2. testPrivate - 它是私有(private)的,因此它只对每个类本身可见。对于调用方方法(它是 Bar)- 它是一个 Bar::testPrivate

因此 - 如果该方法是publicprotected - 它可以被覆盖并从祖先/ child 调用;如果它是 private - 它不能。

关于php - 难以理解如何在扩展类中声明父类的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14367147/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com