在本教程(http://www.techflirt.com/tutorials/oop-in-php/visibility-in-php-classes.html)中,有人说:
受保护:具有受保护可见性的方法或变量只能是 在派生类中访问。或者在儿童班中换句话说。 受保护将用于继承过程。
这里(http://php.net/manual/en/language.oop5.visibility.php)据说:
protected只能在类本身内部访问 继承和父类。
我们经常在继承的类中使用Protected,所以我想知道它是如何工作的:受父类访问受保护,有人能给我举个例子吗?感谢。
答案 0 :(得分:3)
protected
确实允许继承链中的任何类访问。实际上只有一种情况是父/子应该/应该访问子属性或方法:父语句声明并调用protected
方法,而子语句覆盖它。
class Foo {
public function bar() {
$this->baz();
}
protected function baz() { }
}
class Child extends Foo {
protected function baz() {
echo 'Ha!';
}
}
致电$child->bar()
时,这要求Foo::bar
可以访问Child::baz
。父母不应以任何其他方式“了解”其子女,因此无需访问其中的某些内容。
答案 1 :(得分:2)
受保护的可以是从任何继承的类定义它的类访问。
例如
class test {
protected function foo() {
}
public function foobar() {
$this->foo(); //is allowed here
}
}
class testa extends test {
public function bar() {
$this->foo(); //is allowed here
}
}