Class 如何调用超级类';Dart中的构造函数和其他语句?

Class 如何调用超级类';Dart中的构造函数和其他语句?,class,inheritance,dart,Class,Inheritance,Dart,鉴于此代码: abstract class Animal { String name; Animal (String this.name) { } } class Dog extends Animal { // Why does this fail Dog() { super("Spot"); print("Dog was created");

鉴于此代码:

abstract class Animal {

        String name;

        Animal (String this.name) {
        }

}

class Dog extends Animal {

        // Why does this fail
        Dog() {
            super("Spot");
            print("Dog was created");
        }

        // Compared to this
        // Dog() : super("Spot");

}
根据多份文件:

可以使用以下语法调用超级类的构造函数:

Dog() : super("Spot");
我假设这是一种快捷语法,可以快速调用超类的构造函数。但是如果我还想在狗的构造函数中做其他事情,比如调用
print
,该怎么办呢

为什么这不起作用呢?正确的代码编写方法是什么

// Why does this fail
Dog() {
    super("Spot");
    print("Dog was created");
}

您可以通过以下方式调用
super

抽象类动物{
字符串名;
动物(字符串this.name);
}
狗类动物{
Dog():super('Spot'){
印刷品(“狗被创造”);
}
}
void main(){
var d=new Dog();//打印“Dog已创建”。
print(d.name);//打印'Spot'。
}

如果您想在超级
之前执行代码,您可以这样做:

abstract class Animal {
  String name;
  Animal (this.name);
}

class Cat extends Animal {
  String breed;

  Cat(int i):
    breed = breedFromCode(i),
    super(randomName());

  static String breedFromCode(int i) {
    // ...
  }

  static String randomName() {
    // ...
  }
}
在飞镖中,如果我们有

class Bicycle {
  int wheelsNumber;

  Bicycle(this.wheelsNumber); // constructor
}
还有一个孩子继承了它

class ElectricBike extends Bicycle {
  int chargingTime;

  // you can call on the super constructor as such
  ElectricBike(int wheelsNumber, this.chargingTime) : super(wheelsNumber);
}