Оглавление

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

Финальный (final) класс или метод используется для того, чтобы предоставить разработчику возможность управлять наследованием. Классы или методы, объявленные как финальные, не могут быть расширены и/или перегружены классами-наследниками. Чтобы запретить перегрузку определенного класса или метода, в определении класса или метода должно стоять ключевое слово final, как показано в листинге 20.


final class NoExtending {
    public function myFunction() {
        /* Логика функции */
    }
}
class restrictedExtending {
    final public function anotherFunc() {
        /* Логика функции */
    }
}
class myChild extends restrictedExtending {
    public function thirdFunction() {
        /* Логика функции */
    }
}

 

В листинге 20 определяются три разных класса. Первый из них, класс NoExtending, никогда не будет родительским классом для класса-наследника, потому что сам по себе весь класс был объявлен как final. С другой стороны, хотя класс restrictedExtending может быть расширен, метод anotherFunc(), находящийся в нем, никогда не будет перегружен классом-наследником. Как можно видеть, ключевое слово final полезно использовать для того, чтобы обеспечить возможность выполнения действий определенным способом в структурах объектов, не запрещая пользователям реализовывать свои собственные подклассы.

Комментарии принадлежат их авторам. Мы не несем ответственности за их содержание.
Отправитель Нити