You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Dart 3中如何声明interface class的接口方法?

在Dart 3中声明接口方法的正确方式

要在Dart 3中定义包含抽象方法(无方法体)的接口,你需要把interface class和abstract修饰符结合起来,声明为abstract interface class。

为什么之前的写法会报错?

Dart 3的interface class本质是具体类(默认可实例化),而抽象方法(无方法体)只能存在于抽象类中。所以直接在interface class里写无体方法,会触发dartconcrete_class_with_abstract_member错误,提示你要么把类改为抽象,要么给方法添加实现体。

正确的接口写法

abstract interface class Foo {
  late String bar;
  String getFormattedBar(); 
}

这种写法既保留了interface class的特性(只能被implements实现,不能被extends继承),又允许你定义抽象方法,让实现类去编写具体逻辑。

实现类示例

class FooImpl implements Foo {
  @override
  late String bar;

  @override
  String getFormattedBar() {
    return "格式化后的内容: $bar";
  }
}

这样就能完全符合你期望的「接口定义方法签名,实现类编写方法体」的逻辑。

内容的提问来源于stack exchange,提问作者Alex Batres

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 22:03:12