zoukankan      html  css  js  c++  java
  • javafinal 类在程序中的影响

    很多时候我都记不住也弄不太清楚final类在程序的中的作用到底为何,今天正好看到了,就把它记下来,省的以后忘了的时候到处找资料~

    final修饰符对程序的影响总的来说有三点:

    (1)final可以修饰变量,被final修饰的变量被赋初始值之后,不能对其进行重新赋值。

    (2)final可以修饰方法,被final修饰的方法不能被重写。

    (3)final可以修饰类,被final修饰的类不能派生出子类。

    1.final修饰的变量

      首先回顾一下final实例变量的知识,被final实例的变量必须显式的指定初值,而且只能在如下三个位置指定初始值:定义final实例变量时指定初始值,在非静态初始化块中为final实例变量指定初始值,在构造器中为final实例变量指定初始值。本质上final实例变量只能在构造器中被赋初始值。

      对于final类变量来说,也必须显式的指定初始值。通常在两个地方指定:定义final类变量时指定初始值,在静态初始化块中指定初始值。而且本质上final类变量都是在静态初始化块中被赋初始值。

      对于一个使用final来修饰的变量而言,如果定义该变量的时候就指定初始值,而且这个初始值在编译的时候就可以确定下来,那么这个final变量将不再是一个变量,系统会将其当成“宏变量”处理,也就是说,所有出现该变量的地方,系统将直接把它当成对应的值处理。如果被赋的表达式只是基本的算术运算表达式或者字符串连接运算,没有访问普通变量,调用方法,系统仍旧会将此变量当成“宏变量”处理。

      对于final实例变量而言,只有在定义该变量时指定初始值才会有“宏变量”的效果。在非静态初始化块、构造器中为final实例变量指定初始值则没有“宏变量”的效果。对于final类变量也是一样的,只有再定义该变量时指定初始值才会有“宏变量”的效果,在静态初始化块中无效。

    2.final修饰的方法

      一般而言,用final修饰的方法不能被重写。而且,同时用private和final修饰一个方法没有意义,但是是被java语法允许的。

    3.final修饰的类

      内部类或者匿名内部类中访问局部变量必须声明为final。

  • 相关阅读:
    layer-list:Android中layer-list使用详解
    Nexus6p:正在下载系统更新,没有进度
    转:浅谈char类型范围
    C/C++/Java中的volatile关键字
    C++中的mutable关键字
    C++中的typedef typename 作用
    C++中的友元函数和友元类
    用flashfxp做ftp镜像同步
    python读取caffemodel文件
    py-faster-rcnn几个辅助脚本
  • 原文地址:https://www.cnblogs.com/zzcc/p/3678576.html
Copyright © 2011-2022 走看看