所以,我是PHP的新手,我知道这对很多人来说都是一个简单的问题,但我不确定一件事。
如果我有这个,新对象$a
和$d
不能回显function foo()
,因为它受到保护,所以这意味着只有子类可以使用它,OBJECT可以“T?
这对我来说有点混乱。
对不起,如果这是一个愚蠢的问题,但我没有一个php朋友问这个。
<?php
class A {
protected function foo(){
echo "AAA";
}
}
class D extends A { }
$a = new A();
$d = new D();
$a->foo();
$d->foo();
?>
答案 0 :(得分:0)
因为它受到保护,所以它意味着只有子类可以使用它,OBJECT不能吗?
对象是类的实例。这些不等同。
对于您的问题 - 只能从外部访问public
种方法。所以你不能$d->foo()
,但是D
类可以有公共方法x()
,它只会$this->foo()
,而x
就是这个类的一部分,所以允许它到达protected
元素。
答案 1 :(得分:0)
检查一下。这就是它的工作方式。
class A {
protected function foo(){
echo "AAA";
}
}
class D extends A {
public function foo2() {
$a = new A();
$a->foo();
}
}
//$a = new A();
$d = new D();
//$a->foo();
$d->foo2();