class - 如何在 Dart 中调用父类(super class)的构造函数和其他语句?

标签 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");
        }

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

}

根据多个文档:
  • https://www.dartlang.org/dart-tips/dart-tips-ep-11.html
  • https://www.dartlang.org/docs/dart-up-and-running/contents/ch02.html#ch02-implicit-interfaces

  • 您可以使用以下语法调用父类(super class)的构造函数:
    Dog() : super("Spot");
    

    我认为这是一种快速调用父类(super class)构造函数的快捷语法。但是如果我还想在 Dog 的构造函数中做一些额外的事情,比如调用 print .

    为什么这不起作用,编写代码的正确方法是什么?
    // Why does this fail
    Dog() {
        super("Spot");
        print("Dog was created");
    }
    

    最佳答案

    在 Flutter (Dart) 中,如果我们有一个

    class Bicycle {
      int gears;
    
      Bicycle(this.gears); // constructor
    }
    
    和一个继承它的 child
    class ElectricBike extends Bicycle {
      int chargingTime;
    }
    
    我们可以通过父构造函数入参gears像这样:
    class ElectricBike extends Bicycle {
      int chargingTime;
    
      
      ElectricBike(int gears, this.chargingTime) : super(gears);
    }
    
    请注意使用 : super(<parents parameters) .

    关于class - 如何在 Dart 中调用父类(super class)的构造函数和其他语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21033398/

    相关文章:

    c++ - 如果参数中没有传递任何值,如何创建具有默认值的对象?

    python - python类的执行顺序

    ios - 如何在不快速继承 NSObject 的情况下覆盖 NSObject 方法

    python - 如何在不覆盖父函数的情况下将值返回给父类(super class)?

    javascript - 如何在从另一个构造函数类继承的方法中添加更多信息而不用新的信息替换该信息?

    ios - Flutter firebase_admob 在默认应用安装的 iOS 上不工作

    javascript - 为什么声明的方法不在对象的属性列表中

    colors - 如何在 flutter 中调用带有彩色文本的 print() 到 android studio 控制台

    flutter - 如何创建在事件菜单项上带有顶行的 Flutter 底部导航?

    c++ - 在 C++ 中调用静态函数