[英]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.