Ошибки при определении метода подкласса для окончательного метода - PullRequest
0 голосов
/ 27 марта 2012

Я только начинаю понимать ООП PHP, и хотя я все понял, у меня возникли проблемы с ключевым словом final.Final, говорится в книге, останавливает метод подкласса, переопределяя метод суперкласса.Ниже я попробовал это, и моя IDE показывает некоторые ошибки, и это не работает.Я посмотрел и посмотрел, но в книге сказано, что это должно вызывать метод суперкласса, а не подкласс.

$object=new userprofile();
$object->name="Mike";
$object->age=22;
$object->sex="Male";

//2 properties of subclass
$object->email="username@domain.com";
$object->website="http://domain.com";

echo $object->get_name(); //method call

class user{
    public $name, $age, $sex;

    final function get_name(){
        return "Not overriden";
    }
}

class userprofile extends user{
    public $email,$website;

    function get_name(){
        return $this->website;
    }
}

Ответы [ 2 ]

1 голос
/ 27 марта 2012

Звучит так, будто вы ответили сами. Определив ключевое слово final в базовом классе, вы не можете переопределить его в дочернем классе. Удалите ключевое слово final, чтобы переопределить его.

1 голос
/ 27 марта 2012

Как говорится в сообщении об ошибке, вы не можете определить метод, который переопределил бы метод, помеченный как final. Вам даже не разрешено пробовать (и зачем вам, потому что новый метод не будет иметь никакого эффекта).

См. Также документацию для окончательного ключевого слова , которое описывает это в первом примере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...