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
}
网友评论