Dart面试题更新 2026-08-03

在 Dart 语言里,定义类和创建对象的具体写法是怎样的?Dart 支持哪些不同种类的构造函数,它们各自有什么特点和使用场景?

考察说明

考查对 Dart 面向对象基础语法与构造函数类型的掌握程度。

回答思路

  1. 【回答框架 1】类通过 class 关键字定义,类名通常使用大驼峰命名。类可以包含字段、构造函数和方法。对象通过构造函数配合 new 关键字创建,Dart 2 之后 new 关键字可省略。
  2. 【回答框架 2】Dart 构造函数主要类型有:默认构造函数、命名构造函数、参数初始化列表、重定向构造函数、常量构造函数和工厂构造函数。默认构造函数无参数,若未显式定义则自动生成。命名构造函数可为类提供多个构造入口,如 Person.fromJson。
  3. 【回答框架 3】初始化列表在构造函数体执行前对字段赋值,可用于初始化 final 字段或进行断言。重定向构造函数用冒号调用同一类的其他构造函数。常量构造函数用 const 修饰,用于创建编译期常量实例,要求所有字段为 final。
  4. 【回答框架 4】工厂构造函数用 factory 关键字,不总是创建新实例,可从缓存返回已有对象或创建子类实例。工厂构造函数不能访问 this。
  5. 【回答框架 5】每种构造函数的选用依据:普通对象用默认或命名构造;不可变对象用初始化列表加 final;需要缓存或单例用工厂构造;需要编译期常量用 const 构造。
  6. 【关键点 1】类是对象的蓝图,用 class 定义,对象用构造函数创建。
  7. 【关键点 2】Dart 主要构造函数类型:默认、命名、初始化列表、重定向、常量和工厂。
  8. 【关键点 3】const 构造函数要求所有字段 final,用于编译期常量。
  9. 【关键点 4】工厂构造函数可以不返回新实例,适用于缓存和单例。
  10. 【关键点 5】初始化列表在构造体之前执行,可初始化 final 字段。
  11. 【易错点 1】混淆 const 与 final:const 构造函数创建编译期常量,final 只是字段不可变。
  12. 【易错点 2】工厂构造函数中不能访问 this,容易误用。
  13. 【易错点 3】命名构造函数与初始化列表使用冒号语法,注意与继承中 super 的组合。