PHP面向对象编程中的抽象方法可见性

时间:2017-07-24 10:36:47

标签: php access-modifiers

我有一个抽象类,我不知道定义test()函数的两种方法之间的区别

abstract class Foo {
    abstract protected function test();
}

和这个

abstract class Foo {
    abstract function test();
}

它有什么不同吗?

2 个答案:

答案 0 :(得分:3)

来自the PHP manual

  

类方法可以定义为public,private或protected。 声明没有任何明确可见性关键字的方法被定义为公开。

所以答案是否定的,它们不一样:

  • abstract protected function test();只能在类本身以及继承和父类中访问;
  • abstract function test();可以从任何地方访问。

答案 1 :(得分:1)

为了与PHP 4兼容(其中所有内容都是公开的,并且无法指定其他内容),类属性和方法的default visibilitypublic

因此,

abstract class Foo {
    abstract function test();
}

与:

相同
abstract class Foo {
    abstract public function test();
}