Приднестровская поддержка XOOPS
Финальный (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 полезно использовать для того, чтобы обеспечить возможность выполнения действий определенным способом в структурах объектов, не запрещая пользователям реализовывать свои собственные подклассы.
Отправитель | Нити |
---|
8 пользователь(ей) активно (2 пользователь(ей) просматривают Инструкции)
Участников: 0 Гостей: 8 далее... |