Flutter 强制子类实现抽象重写方法

Flutter 强制子类实现抽象重写方法,flutter,oop,dart,Flutter,Oop,Dart,我有一个抽象类,其中包含一些子类需要实现的抽象方法 抽象类块数据{ Widget build(); 区块数据获取价值; } 类NumberData扩展块数据{ NumberData(函数updateCallback):super(updateCallback); //尝试删除以下任一方法会引发预期的编译器错误 @凌驾 BlockWidget构建(){ //TODO:实现构建 抛出未实现的错误(); } @凌驾 BlockData获取值=>此值; } 正如预期的那样,我的子类被迫实现它们。但是,

我有一个抽象类,其中包含一些子类需要实现的抽象方法

抽象类块数据{
Widget build();
区块数据获取价值;
}
类NumberData扩展块数据{
NumberData(函数updateCallback):super(updateCallback);
//尝试删除以下任一方法会引发预期的编译器错误
@凌驾
BlockWidget构建(){
//TODO:实现构建
抛出未实现的错误();
}
@凌驾
BlockData获取值=>此值;
}
正如预期的那样,我的子类被迫实现它们。但是,我还想强制我的类实现一个自定义的
=
hashcode
方法。当我用抽象实现重写抽象类中的这些方法时,它们将被完全忽略,并且允许子类不实现它们

抽象类块数据{
Widget build();
区块数据获取价值;
@凌驾
布尔运算符==(其他);
@凌驾
int获取hashCode;
}
//这应该抛出一个错误,因为它没有实现==或hashcode,但它没有
类NumberData扩展块数据{
NumberData(函数updateCallback):super(updateCallback);
@凌驾
BlockWidget构建(){
//TODO:实现构建
抛出未实现的错误();
}
@凌驾
BlockData获取值=>此值;
}
这与Java中的行为不同,在Java中,您可以创建一个覆盖超类并强制子类具有自定义实现的抽象方法。有没有办法在Dart中强制执行此操作?就这一点而言,这是预期的行为吗?

您不能。(另请参见)


这也是意料之中的。

这是意料之中的
=
hashCode
对象
类中实现,因此不需要
NumberData
显式重写它们。@Christopher在其他语言中,抽象方法声明会在对象中隐藏实现。虽然我知道子类完全没有必要重写equals/hashcode来工作,但在您希望得到正确的==实现的应用程序中,它可以帮助防止错误,从而强制执行自定义实现。我不确定该告诉您什么。Dart是它自己的语言。这是预期的行为。