博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java--final 类在程序中的影响
阅读量:4566 次
发布时间:2019-06-08

本文共 959 字,大约阅读时间需要 3 分钟。

很多时候我都记不住也弄不太清楚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。

转载于:https://www.cnblogs.com/zzcc/p/3678576.html

你可能感兴趣的文章
G450 Ubuntu14 无线网卡解决
查看>>
6.1.2 html
查看>>
Java集合框架--List、Set、Map
查看>>
T-SQL查询进阶-10分钟理解游标
查看>>
上传word里的图片到windows服务器[目前仅完全支持IE,公测]修正下载地址,要的快点,晚了,我就收了...
查看>>
poj 2502(floyd)
查看>>
Maven项目的坐标GroupId和ArtifactId
查看>>
scala foldLeft foldRight 简写
查看>>
MYSQL数据库备份还原
查看>>
微信开发笔记
查看>>
714. Best Time to Buy and Sell Stock with Transaction Fee有交易费的买卖股票
查看>>
拓展编辑器(十九)_拓展全局自定义快捷键
查看>>
【微信小程序】自定义模态框实例
查看>>
ztree实现根节点单击事件,显示节点信息
查看>>
实现文字图片垂直居中的总结性方法
查看>>
洛谷P2002 消息扩散
查看>>
回归起点
查看>>
Maven for Eclipse 第一章 ——Maven的介绍
查看>>
MySQL5.7.20编译安装
查看>>
剑指Offer_32_把数组排成最小的数
查看>>