Silentdoer

导航

Dart里继承extends和实现implements的区别

abstract class Base {
  void fuck();

  void shit() {
    print('sfjkl');
  }
}

class ExtClass extends Base {
  @override
  void fuck() {
    // 只需要实现父类中没有定义的方法
  }
}

class ImpClass implements Base {
  @override
  void fuck() {
    // 把Base当接口时必须实现里面所有的方法和属性
  }

  @override
  void shit() {
    // 这个在Base里是已经实现了的,但是由于这里将Base当成接口,所以仍然需要实现,否则继承和实现就可以说完全没有区别了;
  }
}

 还有就是implements里不能有super【即不能调用基类的构造方法】,而extends则一定会调用基类的构造方法(可能是隐式调用默认构造方法)

posted on 2021-05-22 10:31  Silentdoer  阅读(277)  评论(0编辑  收藏  举报