Dart面试题更新 2026-08-03

请解释 Dart 中扩展方法的概念,并说明其定义方式及使用方法。

考察说明

考察对 Dart 扩展方法概念、定义及使用的理解。

回答思路

  1. 【回答框架 1】扩展方法允许在不修改原有类定义的情况下,为类添加新的方法。它是一个静态的编译时特性,实际是通过静态函数实现,并不改变类的实际行为。
  2. 【回答框架 2】定义时使用 extension 关键字,后跟扩展名和 on 子句指定要扩展的类型。例如:extension StringExtensions on String { int get charCount => length; }。
  3. 【回答框架 3】使用方法简单:在导入定义扩展的库后,就可以像调用实例方法一样调用扩展方法,编译器会自动匹配类型并调用对应的扩展。
  4. 【回答框架 4】扩展成员还可以是 getter、setter 或操作符,定义方式与实例成员类似。
  5. 【回答框架 5】当多个扩展对同一类型定义了相同签名的方法时,调用会产生歧义,需通过显式指定扩展名或导入时使用 show/hide 来解决。
  6. 【关键点 1】扩展方法是静态的编译时特性,不影响原有类。
  7. 【关键点 2】使用 extension ... on Type 语法定义。
  8. 【关键点 3】调用时像调用实例方法一样,自动匹配类型。
  9. 【关键点 4】可以定义方法、getter、setter 和操作符。
  10. 【关键点 5】同名冲突时需要显式处理。
  11. 【易错点 1】扩展方法不能覆盖已有实例方法,当调用时优先使用实例方法。
  12. 【易错点 2】扩展方法无法访问私有成员。
  13. 【易错点 3】动态调用时扩展方法可能不生效,因为它是静态解析的。