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

Модификатор base

Модификатор base применяется к объявлению класса и запрещает его наследование за пределами текущей библиотеки. Это означает, что класс с модификатором base может быть расширен только внутри той же библиотеки, где он объявлен. За её пределами класс можно использовать, создавать его экземпляры, но нельзя от него наследоваться. Модификатор base не принимает параметров.

Класс, помеченный как base, обязан быть либо base, либо final. Это правило гарантирует, что цепочка наследования не выйдет за пределы библиотеки.

Синтаксис

base class MyClass { // тело класса }

Пример

Давайте объявим класс Animal с модификатором base и расширим его внутри той же библиотеки:

base class Animal { void say() { print('animal'); } } class Dog extends Animal { void bark() { print('woof'); } } void main() { Dog dog = Dog(); dog.say(); dog.bark(); }

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

"animal" "woof"

Пример

Давайте объявим класс Shape с модификатором base и попробуем расширить его в другой библиотеке. Такой код не скомпилируется:

// library_a.dart base class Shape { void draw() { print('shape'); } } // library_b.dart import 'library_a.dart'; // ошибка: класс Shape нельзя наследовать // за пределами его библиотеки class Circle extends Shape { void round() { print('circle'); } }

Компилятор выдаст ошибку, так как класс Shape помечен модификатором base и не может быть расширен за пределами своей библиотеки.

Пример

Давайте используем класс base из другой библиотеки без наследования, просто создав его экземпляр:

<+dart+> // library_a.dart base class Shape { void draw() { print('shape'); } } // library_b.dart import 'library_a.dart'; void main() { Shape shape = Shape(); shape.draw(); } <-dart+>

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

"shape"

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

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