Ключевое слово abstract
Ключевое слово abstract в Dart используется
для объявления абстрактных классов и абстрактных
методов. Абстрактный класс не может быть
инстанцирован напрямую - от него можно только
наследоваться. Абстрактный метод не имеет тела
и должен быть обязательно переопределён в
классе-наследнике. Абстрактные методы могут
существовать только внутри абстрактных классов.
Синтаксис
abstract class ClassName
{
void methodName();
}
Пример
Давайте создадим абстрактный класс Shape
с абстрактным методом area и унаследуем
от него класс Rectangle, который
переопределит этот метод:
abstract class Shape
{
double area();
}
class Rectangle extends Shape
{
double width;
double height;
Rectangle(this.width, this.height);
@override
double area()
{
return width * height;
}
}
void main()
{
Rectangle rect = Rectangle(3, 4);
print(rect.area());
}
Результат выполнения кода:
12.0
Пример
Абстрактный класс может содержать как
абстрактные методы, так и обычные методы
с реализацией. Давайте создадим класс
Animal с абстрактным методом
sound и обычным методом
describe:
abstract class Animal
{
String name;
Animal(this.name);
String sound();
String describe()
{
return 'Animal: $name';
}
}
class Dog extends Animal
{
Dog(String name) : super(name);
@override
String sound()
{
return 'Woof';
}
}
void main()
{
Dog dog = Dog('Rex');
print(dog.describe());
print(dog.sound());
}
Результат выполнения кода:
"Animal: Rex"
"Woof"
Пример
Абстрактный класс не может быть создан напрямую. Давайте попробуем инстанцировать абстрактный класс и убедимся, что компилятор выдаст ошибку:
abstract class Shape
{
double area();
}
void main()
{
// Shape shape = Shape(); // ошибка компиляции
print('Cannot instantiate abstract class');
}
Результат выполнения кода:
"Cannot instantiate abstract class"
Смотрите также
-
ключевое слово
extends,
которое используется для наследования -
ключевое слово
implements,
которое реализует интерфейс класса -
ключевое слово
mixin,
которое добавляет функциональность классу -
ключевое слово
interface class,
который задаёт интерфейс для реализации