¿Por qué es posible anular variables de instancia en PHP pero no en Java?

Considere el siguiente código:

<?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

Dado que en otros lenguajes, como Java, no podrá anular la variable de instancia, pero es posible en PHP.

¿Es porque dado que PHP es un lenguaje de tipo débil, entonces es posible?

Respuestas a la pregunta(2)

Su respuesta a la pregunta