美文网首页
Dart:修饰符 static final const的区别

Dart:修饰符 static final const的区别

作者: 谢伟浩 | 来源:发表于2019-07-10 14:58 被阅读0次

    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
    }
    

    相关文章

      网友评论

          本文标题:Dart:修饰符 static final const的区别

          本文链接:https://www.haomeiwen.com/subject/niyqfqtx.html