有人可以解释一下,为什么可以在 PHP 中执行以下操作,但是,例如,不能在 C# 或 Java 中执行以下操作:
Class A {
protected $a = 'Howdy!';
}
Class B extends A {
public function howdy() {
$created = new A();
echo $created->a; <----- This is legal due to per-class visibility
}
}
$b = new B();
echo $b->howdy(); <----- Hence, no fatal error here
此处似乎指定了此行为,但我无法理解其背后的根本原因 (在我看来,不能简单地实现per-class
可见性而不是per-instance
没有充分理由的可见性)。