开发者

Why is it possible to override instance variables in PHP but not in Java?

Consider the code below:

<?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: Fo开发者_开发技巧o

$b = new Base();
echo $b->getName(); // output: Base

Since in other languages such as Java won't allow you to override the instance variable, but it is possible in PHP.

Is it because since PHP is weak type language so it is possible?


No, it has nothing to do with weak typing.

I guess this was simply a design decision that the PHP developers took. It may be because it is more of a scripting language than Java. (In Java, you would need to have a "virtual" lookup table for fields to support this or, alternatively, automatically generated getters / setters).


You made the instance variable protected, this means extending classes can overwrite it. If you want to prevent that use private.

http://www.php.net/manual/en/language.oop5.visibility.php

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜