Dart相关保留字符

1、const 和 final

1.1 官网的解释

If you never intend to change a variable, use final or const, either instead of var or in addition to a type. A final variable can be set only once; a const variable is a compile-time constant. (Const variables are implicitly final.)

const、 final修饰变量的时候表明改变量只能被修改一次,const编译时常量,final 为运行常量,

1.2 实例变量只能是final

1.3 const 不仅可以声明变量,还可以用来声明创建常量的构造函数、以及创建常量

var constanEg1 = const []; // 声明常量
final constantEg2 = const []; // final 修饰变量的常量值

constanEg1 = [4, 5, 6]; // 编译通过
constantEg2 = [7]; // 	编译无法通过  Error: Constant variables can't be assigned a value.
  • 任何变量都有常量值

1.4 关于引用类型的修饰

1.4.1对象示例
void main(List<String> args) {
  final p1 = Person(name: 'jeversonjee');
  p1.job = 'flutter engineer';
  p1.name = 'jeverson';
//  var p2 = Person(name: 'jackie');
//  p1 = p2;
  print('Person 对象 $p1');
}

class Person {
  String? name;
  String? job;

  Person({this.name, this.job});

  
  String toString() {
    return '{name: $name, job: $job}';
  }
}
//	输出结果
//	Person 对象 {name: jeverson, job: flutter engineer}
  • 关于final 修饰的对象, 对象的属性值是可以修改的;对象的引用是不能修改的。
  • 上述提到const修饰构造函数,那么const 修饰的构造函数是啥样的呢
1.4.2 const 修饰的构造函数
class Point {
  final int x;
  final int y;

  const Point(this.x, this.y);

  
  String toString() {
    return '当前坐标为:{x: $x, y: $y}';
  }
}
  • const 修饰的构造函数中,成员变量得用final 修饰
  • 言归正传想要对象的属性不可变,那么该如何操作呢
void main(List<String> args) {
  const point1 = Point(1, 1);
  // point1.x = 2;  'x' can't be used as a setter because it's final.
  var point2 = Point(0, 0);
//  point1 = point2; Constant variables can't be assigned a value.
  point2 = point1;
//  point2.x = 1; 'x' can't be used as a setter because it's final.
}
  • 综上对象属性不可变首先我们得保证,成员变量是final,对象修饰符必须为const

2、extends、mixin、implement

logs

  • 2024/01/03 const 和 final

你可能感兴趣的:(Flutter,flutter)