Welcome to php club

Финальные классы и методы

Краткое описание

В PHP5 стало возможным определять финальные классы и методы. Финальный метод не может быть переопределен в потомке. Финальный класс не может являться предком для другого класса. Методы финального класса можно не объявлять финальными. Свойство не может быть финальным. Финальные методы и классы объявляются с помощью ключевого слова final, которое указывается перед ключевыми словами class или function.
Пример:

<?php
class Foo1 {
    
//final public $bar; // Fatal error: Cannot declare property Foo1::$bar final, the final modifier is allowed only for methods
    
final public function bar() {
        
// ...
    
}
}

final class
Foo2 extends Foo1 {
    
//public function bar() {} // Fatal error: Cannot override final method Foo1::bar()
    // ...
}

//class Foo3 extends Foo2 {} // Fatal error: Class Foo3 may not inherit from final class (Foo2)
?>

Проблемы с обратной совместимостью

Старый код без пользовательских функций, методов или классов с именем final должен работать без изменений.

Дополнительные сведения

Описание в оригинальной документации: http://www.php.net/oop5.final


 
Комментариев нет. [Показать комментарии/форму]