РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
115 of 723 menu

Модификатор final у класса

Модификатор final перед объявлением класса запрещает наследование от этого класса и его реализацию в других классах. Такой класс нельзя расширить через extends, нельзя реализовать через implements, нельзя примешать через with. При этом сам final-класс может наследоваться от других классов и реализовывать интерфейсы.

Модификатор final гарантирует, что поведение класса не будет изменено через наследование. Это полезно для классов, которые должны оставаться неизменными и предсказуемыми.

Синтаксис

final class ClassName { // body }

Пример

Давайте объявим final-класс и создадим его экземпляр:

final class Point { final int x; final int y; const Point(this.x, this.y); } void main() { Point p = const Point(1, 2); print('${p.x}, ${p.y}'); }

Результат выполнения кода:

"1, 2"

Пример

Попытка наследоваться от final-класса приведет к ошибке компиляции:

final class Point { final int x; final int y; const Point(this.x, this.y); } // Error: The type 'Point' can't be // extended because it's 'final' class Point3D extends Point { final int z; const Point3D(super.x, super.y, this.z); } void main() { Point3D p = const Point3D(1, 2, 3); print('${p.x}, ${p.y}, ${p.z}'); }

Результат выполнения кода:

Error: The type 'Point' can't be extended because it's 'final'

Пример

final-класс может наследоваться от другого класса и реализовывать интерфейсы:

abstract class Shape { double area(); } final class Circle extends Shape { final double radius; const Circle(this.radius); @override double area() { return 3.14 * radius * radius; } } void main() { Circle c = const Circle(2); print(c.area()); }

Результат выполнения кода:

12.56

Смотрите также

  • модификатор sealed,
    который ограничивает наследование закрытым набором классов
  • модификатор base,
    который требует наследования вместо реализации
  • модификатор interface,
    который запрещает наследование, но разрешает реализацию
  • модификатор abstract,
    который запрещает создание экземпляров класса
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить