首页 > 其他分享 >Dart final const

Dart final const

时间:2023-12-31 17:11:38浏览次数:34  
标签:const 常量 final Dart class 变量 赋值

Dart中的constfinal

在Dart编程语言中,constfinal关键字都用于声明常量。虽然它们的目的相同,但在语义和使用上略有不同。

const

const关键字用于创建不可变(immutable)的常量,这些常量的值必须在编译时就已知。const可以用于变量、方法和集合(如List)的声明。

  • 对于变量,const表示该变量是一个编译时常量,一旦被赋值后,其值无法修改。

    const int x = 10; // 只能被赋值一次
    const int y = x + 5; // 在赋值时可以进行运算
    
  • 对于方法,const表示该方法是一个编译时常量,不能被子类重写。

    class Parent {
      const Parent();
    
      const void myMethod() {
        // 一些代码
      }
    }
    
    class Child extends Parent {
      @override
      void myMethod() {
        // 错误:无法重写一个const方法
      }
    }
    
  • 对于集合(如List),const表示该集合是一个不可变的编译时常量。例如:

    const List<int> numbers = [1, 2, 3];
    

    上述代码创建了一个不可变的List numbers,其中包含了数字1、2和3。由于是常量,无法在运行时修改它的内容。

final

final关键字用于表示一个只能被赋值一次的变量,即常量。一旦给final变量赋值后,就无法修改其值。final关键字可以用于变量、方法和类的声明。

  • 对于变量,final表示只能被赋值一次。这意味着变量的值在初始化之后不能再被修改。

    final int x = 10; // 只能被赋值一次
    final int y = x + 5; // 在赋值时可以进行运算
    
  • 对于方法,final表示该方法不能被子类重写。

    class Parent {
      final void myMethod() {
        // 一些代码
      }
    }
    
    class Child extends Parent {
      @override
      void myMethod() {
        // 错误:无法重写一个final方法
      }
    }
    
  • 对于类,final表示该类不能被继承。

    final class MyClass {
      // 类的定义
    }
    
    class AnotherClass extends MyClass {
      // 错误:无法继承final类
    }
    

综上所述,const用于创建不可变的常量,而final用于声明常量变量。const关键字在编译时就确定,而final关键字的值在运行时确定,但无法修改。无论是const还是final,它们都提供了一种定义不可变值的方式,帮助我们编写更加安全和可靠的代码。

标签:const,常量,final,Dart,class,变量,赋值
From: https://www.cnblogs.com/sqmw/p/17937759

相关文章

  • Var 和 Let 以及 Const
    var是最开始的JavaScript关键词之一,一个变量在JavaScript中,分为声明和初始化。var具有变量提升无论声明在哪里,变量提升会把都会提升到该作用域的最顶部,你在任何地方都会访问的到函数作用域,而且可以多次声明,就会造成你自己啥时候覆盖了都不知道Let和Const具有块级作用域当......
  • 基于JFinal的数据库配置
    参考——https://blog.csdn.net/weixin_42579328/article/details/89490760 1、创建数据表:CREATETABLE`user`(`id`int(11)NOTNULLAUTO_INCREMENT,`name`varchar(20)NOTNULL,`pwd`varchar(20)NOTNULL,PRIMARYKEY(`id`))ENGINE=InnoDBAUTO_INCREMENT=......
  • 在IDEA上创建基于maven的JFinal项目
    一、创建项目:注意:点击完成后需要等待一段时间,让idea根据webapp模板创建项目; 二、相关配置1、pom.xml配置<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance&q......
  • const指针
    #include<iostream>usingnamespacestd;intmain(){//const指针intnum=1;intanother=2;//这个指针指向的内容,不能透过这个指针来修改//可以理解为constint*,constint的指针==>常量指针constint*p1=&num;*p1=3;......
  • CF1917F Construct Tree 题解
    Description给你一个数组\(l_1,l_2,\dots.l_n\)和一个数字\(d\)。问你是否能够构造一棵树满足以下条件:这棵树有\(n+1\)个点。第\(i\)条边的长度是\(l_i\)。树的直径是\(d\)。只需要判断是否有解即可。\(2\len\le2000,1\led\le2000,1\lel_i\led\)。Solutio......
  • const和readonly有什么区别?
    都可以标识一个常量。主要有以下区别:1、初始化位置不同。const必须在声明的同时赋值;readonly即可以在声明处赋值;2、修饰对象不同。const即可以修饰类的字段,也可以修饰局部变量;readonly只能修饰类的字段3、const是编译时常量,在编译时确定该值;readonly是运行时常量,在运行时确定该值......
  • CF1917F Construct Tree 题解
    题目链接:https://codeforces.com/contest/1917/problem/F题意有\(n\)条长度\(l_i\)的边,问它们是否能组成一棵\(n+1\)个节点的树,使得树的直径长度为\(d\)。\(n,d\le2000\)。题解首先当然要存在一个边集\(D\),使得\(\sum\limits_{i\inD}l_i=d\),这可以使用背包......
  • try except except finally
    importtracebackimporttimeclassA(object):def__init__(self):print(f'Initializing{self.__class__.__name__}')def__del__(self):print(f'Releasing{self.__class__.__name__}')classB(A):pass......
  • 【CF1917F】Construct Tree
    题目题目链接:https://codeforces.com/contest/1917/problem/F给出\(n\)条边的边权,询问是否可以构造出一棵树,使得所有边都被用上恰好一次且直径为\(d\)。\(n,d\leq2000\)。思路首先肯定是找出一条长度为\(d\)的链,然后判断可不可以把剩下的所有边都挂在这条链的带权重心......
  • 软件构造实验三——调用JFinal框架实现增删改查的学生信息管理系统
    项目结构具体代码_JFinalDemoGenerator.javapackageorg.example.common.model;importcom.jfinal.plugin.activerecord.dialect.MysqlDialect;importcom.jfinal.plugin.activerecord.generator.Generator;importcom.jfinal.plugin.activerecord.generator.TypeMapping......