flutter 强制子类实现抽象覆盖方法

jdgnovmf  于 2023-08-07  发布在  Flutter
关注(0)|答案(2)|浏览(158)

我有一个抽象类,它有一些子类需要实现的抽象方法。

abstract class BlockData {
  Widget build();

  BlockData get value;
}

class NumberData extends BlockData {

  NumberData(Function updateCallback) : super(updateCallback);

  // trying to remove either of the below methods throws a compiler error as expected
  @override
  BlockWidget build() {
    // TODO: implement build
    throw UnimplementedError();
  }

  @override
  BlockData get value => this;
}

字符串
正如预期的那样,我的子类被迫实现它们。但是,我还想强制类实现自定义的==hashcode方法。当我用抽象实现覆盖抽象类中的这些方法时,它们被完全忽略,子类被允许不实现它们。

abstract class BlockData {
  Widget build();

  BlockData get value;

  @override
  bool operator ==(other);

  @override
  int get hashCode;
}

// this should throw an error since it doesn't implement == or hashcode, but it doesn't
class NumberData extends BlockData {

  NumberData(Function updateCallback) : super(updateCallback);

  @override
  BlockWidget build() {
    // TODO: implement build
    throw UnimplementedError();
  }

  @override
  BlockData get value => this;
}


这与Java中的行为不同,在Java中,您可以创建一个抽象方法来覆盖超类,并强制子类具有自定义实现。有没有办法在Dart中强制执行此操作,以及这是否是预期的行为?

相关问题