Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗dtOpAbAP 47 of 113 menu
◀ ▶

Абстрактный геттер в Dart

Кроме методов, в абстрактном классе можно объявить абстрактный геттер. У него нет тела в родителе - только имя и тип. Конкретный потомок обязан определить геттер и указать @override.

Абстрактный геттер в объявлении класса выглядит так:

abstract class Figure { double get area; double get perimeter; }

В Circle радиус хранят в конструкторе, а площадь и периметр считают в переопределенных геттерах:

import 'dart:math'; class Circle extends Figure { double radius; Circle(this.radius); @override double get area => pi * radius * radius; @override double get perimeter => 2 * pi * radius; }

У Rectangle задают ширину и высоту, формулы те же - через геттеры:

class Rectangle extends Figure { double width; double height; Rectangle(this.width, this.height); @override double get area => width * height; @override double get perimeter => 2 * (width + height); }

Абстрактным может быть и геттер для изменяемого значения - тогда в родителе пишут объявление без тела, а в потомке хранят поле или задают геттер и сеттер:

abstract class Counter { int get count; set count(int value); } class SimpleCounter extends Counter { int _count = 0; @override int get count => _count; @override set count(int value) { _count = value; } }

У записи заголовок часто задают через абстрактный геттер в Post, а в Note возвращают значение поля:

abstract class Post { String get title; } class Note extends Post { String _title; Note(this._title); @override String get title => _title; }

Сделайте абстрактный класс Figure с абстрактными геттерами area и perimeter. Сделайте класс Square, принимающий длину стороны в конструкторе, и реализуйте в нем оба абстрактных геттера.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить