Добро пожаловать на форум PHP программистов!
За последние 24 часа нас посетили 9652 программиста и 427 роботов. Сейчас ищет 121 программист ...
Приступая к работе

Ключевое слово "final"

Вернуться к: Классы и объекты

PHP 5 представляет ключевое слово final, разместив которое перед объявлениями методов класса, можно предотвратить их переопределение в дочерних классах. Если же сам класс определяется с этим ключевым словом, то он не сможет быть унаследован.

Пример #1 Пример окончательных (final) методов

<?php
class BaseClass {
   public function 
test() {
       echo 
"Вызван метод BaseClass::test()\n";
   }
   
   final public function 
moreTesting() {
       echo 
"Вызван метод BaseClass::moreTesting()\n";
   }
}

class 
ChildClass extends BaseClass {
   public function 
moreTesting() {
       echo 
"Вызван метод ChildClass::moreTesting()\n";
   }
}
// Выполнение заканчивается фатальной ошибкой: Cannot override final method BaseClass::moreTesting()
// (Метод BaseClass::moretesting() не может быть переопределён)
?>

Пример #2 Пример окончательного (final) класса

<?php
final class BaseClass {
   public function 
test() {
       echo 
"Вызван метод BaseClass::test()\n";
   }

   
// В данном случае неважно, укажете ли вы этот метод как final или нет
   
final public function moreTesting() {
       echo 
"BaseClass::moreTesting() called\n";
   }
}

class 
ChildClass extends BaseClass {
}
// Выполнение заканчивается фатальной ошибкой: Class ChildClass may not inherit from final class (BaseClass)
// (Класс ChildClass не может быть унаследован от окончательного класса (BaseClass))
?>

Замечание: Свойства не могут быть объявлены окончательными, только классы и методы.



Вернуться к: Классы и объекты

© 2018 «PHP.RU — Сообщество PHP-Программистов»
Главная | Форум | Реклама на сайте | Контакты VIP Сувениры
Разработка компании ODware