zoukankan      html  css  js  c++  java
  • final关键字

    final 关键字可用于修饰类、变量和方法,用于表示修饰的类、方法和变量不可改变。
    final修饰变量时,表示该变量一旦获得了初始值就不可被改变,final既可以修饰成员变量(包括类变量和实例变量),也可以修饰局部变量、形参。
    final修饰成员变量
    对于final修饰的成员变量而言,一旦有了初始值,就不能被重新赋值,如果既没有在定义成员变量时指定初始值,也没有在初始化块、构造器中为成员变量指定初始值,那么这些成员变量的值将一直是系统默认分配的值,这些成员变量也就完全失去了存在的意义。因此java语法规定:
    final修饰的类Field、实例Field必须由程序员显式地指定初始值。
    类Field、实例Field能指定初始值得地方如下:
    类Field:必须在静态初始化块中或声明该Field时指定初始值。
    实例Field:必须在非静态初始化块、声明该Field或构造器中指定初始值。
    Final修饰局部变量
    系统不会对局部变量进行初始化,局部变量必须由程序员显示初始化。因此使用final修饰局部变量时,既可以在定义时指定默认值,也可以不指定默认值。
    如果final修饰的局部变量在定义时没有指定默认值,则可以在后面代码中对该final变量赋初始值,但只能一次,不能重复赋值;如果final修饰的局部变量在定义时已经指定了初始值,则后面代码中不能再对该变量赋值。
    因为形参在调用该方法时,由系统根据传入的参数来完成初始化,因此使用final修饰的形参不能被赋值。
    final修饰的基本类型和引用类型
    final修饰基本类型变量时,不能对基本类型变量重新赋值,因此基本类型变量不能被改变。
    但对于引用类型变量而言,它保存的仅仅是一个引用,final只保证这个引用类型变量所引用的地址不会改变,即一直引用同一个对象,但这个对象完全可以发生改变 
    final方法和final类
           final方法

        final修饰的方法不可被重写,如果出于某些原因,不希望子类重写父类的某个方法,则可以使用final修饰该方法。 

          final类

       final 修饰的类不可以有子类,例如java.lang.Math类就是一个final类,它不可以有子类。 
  • 相关阅读:
    商户网站使用第三方支付的大致原理和实现
    ASP.NET MVC中检测浏览器版本并提示下载更新
    如何选择使用IEnumerable, ICollection, IList
    IEnumerable和IQueryable的区别以及背后的ExpressionTree表达式树
    IEnumerable是集合,IEnumerator是集合的迭代器
    ASP.NET MVC中使用Session来保持表单的状态
    在ASP.NET MVC中实现Select多选
    总结ASP.NET MVC视图页使用jQuery传递异步数据的几种方式
    在ASP.NET MVC4中使用Quartz.NET执行定时任务
    委托, 泛型委托,Func<T>和Action<T>
  • 原文地址:https://www.cnblogs.com/t0404/p/10291081.html
Copyright © 2011-2022 走看看