Вы хотите применить шаблон к конструкторам подклассов. Язык Дарт не поддерживает этого.
Дарт имеет типы и интерфейсы , которые можно использовать для ограничения значений и членов экземпляров класса.
Если класс реализует интерфейс, то его члены instance должны удовлетворять сигнатурам, объявленным суперинтерфейсом. Это ограничивает элементы экземпляра.
Если переменная имеет тип, например тип функции, то вы можете назначать ей только значения этого типа. Это ограничивает значения . Поскольку класс является подтипом его интерфейсов, ограничение подкласса означает, что типизированные переменные класса можно безопасно использовать (подтип можно использовать как его супертип, поскольку он имеет совместимый интерфейс).
Нет способаограничить статические члены или конструкторы классов или членов библиотек, потому что нет способа абстрагироваться над ними. Вы всегда должны обращаться к ним напрямую по их точному имени, поэтому не нужно , чтобы они соответствовали определенному шаблону. (Это может объяснить, почему вы тоже нашли цель необязательной).
В этой ситуации ваши подклассы должны вызвать конструктор A.someConstructor
, но они могут свободно выбирать подпись своегособственные конструкторы. Они могут сделать:
class B extends A {
B.someConstructor(Object foo) : super.someConstructor(foo);
}
// or
class C extends A {
C.differentName(Object foo) : super.someConstructor(foo);
}
// or even
class D extends A {
C() : super.someConstructor(new Object());
}