Flutter 抽象类、接口与mixin

抽象类、接口与mixin

核心对比

抽象类 接口 mixin
关键字 abstract class 无,用 abstract class / class mixin
使用方式 extends implements with
多继承 仅单继承 可实现多个接口 可使用多个 mixin
有无构造函数
可否实例化
能力复用 子类可复用抽象类中已实现的方法 不可复用 可复用
方法是否必须重写 抽象方法必须 所有 可选
使用场景 定义基类 定义行为规范 工具类

抽象类

通过 abstract class 关键字定义。

dart

typescript 复制代码
	// 抽象类:定义动物规范
	abstract class Animal {
	  // 成员变量
	  String name;

	  // 构造函数
	  Animal(this.name);

	  // 抽象方法(必须实现)
	  void makeSound();

	  // 普通方法(已有实现,可直接用)
	  void eat() {
	    print("$name is eating");
	  }
	}

	// 子类继承抽象类
	class Dog extends Animal {
	  // 调用父类构造
	  Dog(String name) : super(name);

	  // 必须实现抽象方法
	  @override
	  void makeSound() {
	    print("Woof!");
	  }
	}

	void main() {
	  // Animal(); ❌ 抽象类不能实例化
	  final dog = Dog("Buddy");
	  dog.makeSound(); // Woof!
	  dog.eat();       // Buddy is eating
	}

特性

  • 不能实例化,使用 extends 继承
  • 可继承抽象类的所有成员(变量 & 方法)
  • 子类需实现所有抽象方法,可选择性的覆写抽象类中已实现的方法
  • Dart 为单继承语言

设计目的

提供通用能力 + 规范,通常用于定义基类,如 BaseWidget

接口

Dart 中无 interface 关键字,通过 abstract classclass 定义的类既是抽象类,也是接口。

objectivec

csharp 复制代码
	class Flyable {
	  void fly();
	}

特性

  • 需实现接口中的所有成员(变量 & 方法)
  • 可实现多个接口
  • 不能继承 class 中已实现的方法

设计目的

定义规范 + 约束。当类 A 想实现类 B 中的 API,而不想继承 B 的实现时,可通过 A implements B 实现。

mixin(混入)

是一种横向复用代码的机制,通过 mixin 定义,with 使用。

objectivec

scala 复制代码
	mixin Logger {
	  void log(String message) {
	    print('LOG: $message');
	  }
	}

	class UserService with Logger {
	  void createUser() {
	    log('User created');
	  }
	}

特性

  • 可定义变量、方法
  • 通过 on 关键字约束使用范围,如 mixin A on State,只有 State 及其子类可使用 mixin A。
  • 冲突处理:后混入的会覆盖先混入的同名成员

设计目的

  • 不破坏类层级
  • 可组合使用多个能力
  • 架构解耦
相关推荐
程序员老刘1 天前
跨平台开发地图 | 2026年6月
flutter·ai编程·客户端
悟空瞎说2 天前
Flutter 架构详解:新手必懂底层原理
flutter
SoaringHeart2 天前
Flutter最佳实践:IM聊天文字链接自动识别跳转
前端·flutter
恋猫de小郭2 天前
KMP / CMP 鸿蒙版本 Beta 发布,他有什么特别之处?
android·前端·flutter
风华圆舞3 天前
Flutter + 鸿蒙 Intents Kit:页面直达能力的完整接入方案
flutter·ui·华为·harmonyos
韩曙亮3 天前
【Flutter】Flutter 组件 ④ ( 组件渲染 的 三棵树理论 | Widget 树 → Element 树 → RenderObject 树 )
flutter·element·widget·renderobject
恋猫de小郭3 天前
Android 17 正式版发布,全新 AI 和各种破坏性更新
android·前端·flutter
kingbal3 天前
Windows:flutter环境搭建
windows·flutter
911hzh3 天前
Flutter MethodChannel 跨端通信框架 zh_native_channel:快速入门、优势分析与 Pigeon 对比
flutter
911hzh3 天前
Flutter 快速搭建新项目:用 Flutter Foundation Kit 一条命令生成带基础架构的 App 模板
flutter