Dart:修饰符 static final const的区别

static:

用于修饰成员变量,这个变量是属于类的,而不是属于对象的,除此之外没有其他别的含义了,static修饰符的使用方式和Java类似。 static变量直到运行期被使用时才会实例化。

final:

用于修饰变量,表示单赋值(single-assignment),使用final修饰的变量必须进行初始化,一旦被赋值之后,不能够再次被赋值,否则编译会报错。跟java的区别是:final不能用来修饰类和方法。

const:

表示对象的状态完全可以在编译期间确定,并且完全是不可变的。

  • const变量不会在内存中重复创建,如果表达式被调用了多次,则重用之前创建好的常量。
  • const构造函数的前提是成员变量必须都是用final修饰的。const单例多例可以如下实现:
class Man {

  final int age;
  const Man({this.age});
//  static const m = const Man(age: 7);
}

main() {

//  const Man m0 = new Man(age: 7); error
  const Man m1 = const Man(age: 19);
  const Man m2 = const Man(age: 20);
  const Man m3 = const Man(age: 19);

  print(m1 == m2); //false
  print(m1 == m3); //true
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容