[英]Why is it possible to override instance variables in PHP but not in Java?
请考虑以下代码:
<?php
class Base {
protected $name = "Base";
public function getName() {
return $this->name;
}
}
class Foo extends Base {
protected $name = "Foo";
}
$f = new Foo();
echo $f->getName(); // output: Foo
$b = new Base();
echo $b->getName(); // output: Base
因为在Java等其他语言中不允许覆盖实例变量,但在PHP中是可能的。
是因为PHP是弱类型语言所以它可能吗?
不,它与弱打字无关。
我想这只是PHP开发人员的一个设计决策。 这可能是因为它更像是一种脚本语言而不是Java。 (在Java中,您需要为字段提供“虚拟”查找表以支持此操作,或者自动生成的getter / setter)。
您使实例变量受到保护,这意味着扩展类可以覆盖它。 如果你想防止私人使用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.