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);
}