Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 私有方法在子类中是否可以被过度使用_Php_Oop_Overriding - Fatal编程技术网

Php 私有方法在子类中是否可以被过度使用

Php 私有方法在子类中是否可以被过度使用,php,oop,overriding,Php,Oop,Overriding,这是一个示例,在该示例中,如果子类方法的访问类型为public,则子类方法可以重写父类方法 例: 但是,如果在父类Foo中为fun1提供了private访问权限,则该方法将不再被滥用 例: 在这种情况下,输出将是hello world 我想知道,即使访问类型为private,是否可以通过扩展类重写方法fun1?不知道PHP,但按照OOP概念不,因为带有访问修饰符private的方法虽然存在,但子类无法重写或访问。如果要将其覆盖到子类,请尝试将访问修饰符更改为public或protected被否决

这是一个示例,在该示例中,如果子类方法的访问类型为public,则子类方法可以重写父类方法 例:

但是,如果在父类
Foo
中为
fun1
提供了
private
访问权限,则该方法将不再被滥用

例:

在这种情况下,输出将是
hello world


我想知道,即使访问类型为
private
,是否可以通过扩展类重写方法
fun1

不知道PHP,但按照OOP概念,因为带有访问修饰符
private
的方法虽然存在,但子类无法重写或访问。如果要将其覆盖到子类,请尝试将访问修饰符更改为
public
protected

被否决的人,您是否无法遵循答案?或者你看到答案中遗漏了什么吗?
class Foo {

  public function fun1() {
    echo "Hello World";
  }

  public function callMe(){
    $this->fun1();
  }
}


class Bar extends Foo {

  public function fun1(){
    echo "check this out";
  }
}

$bar = new Bar();
$bar->callMe(); //this would print "check this out"
class Foo {

  private function fun1() {
    echo "hello world";
  }

  public function callMe(){
    $this->fun1();
  }
}