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
相关产品推荐
相关产品推荐

