1/Путь к первому мобильному приложению. Часть 1.10 - Изучаем язык Dart: ООП. Статические элементы класса, абстрактные классы и методы

Статические элементы

Статические поля и константы определяются также как и обычно, только в начале указывается ключевое слово static. Разница лишь в том, что статическое поле мы можем изменить извне обратившись к нему через класс.

Статические методы относятся ко всему классу и обычно высчитывают значения которые не влияют на внутренние поля класса.

// Статические переменные и методы класса
class MyStatic {
  static const PI = 3.14159;
  static int Cost = 2;
  static void hi() => print ( 'Static Method' );
}
// Программа
void main ( ) {
  print ( MyStatic.PI ); // 3.14159
  print ( MyStatic.Cost ); // 2
  MyStatic.Cost = 3;
  print ( MyStatic.Cost ); // 3
  MyStatic.hi(); // Static Method
}

Абстрактные классы и методы

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

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

// Абстрактный класс c абстрактным методом
abstract class AbstractContainer {
  void updateChildren(); 
}
class MyClass extends AbstractContainer {
  void updateChildren() {
    print ( 'updateChildren' );
  }
}
// Программа
void main ( ) {
  var abstractValue = MyClass ( );
  abstractValue.updateChildren(); // updateChildren
}