今天给大家总结介绍一下Java类中final关键字的用法及细节。
final关键字:
final关键字的意思:终结器,到此为止,最终。
1.final修饰属性
被final修饰的属性为最终属性,它的值无法修改,所以可以使用final关键字来定义常量。final修饰的属性可以是基本数据类型,也可以是引用数据类型,下面我们来看一下修饰二者的区别:
final修饰基本数据类型:
final int a=20; 则a是一个常量,只能储存20,不能修改其值。
final修饰引用数据类型:
引用数据类型有数组、类、接口,以数组为例。
使用final修饰引用数据类型,值不能修改,这个值指的是引用数据类型中保存的地址值,地址指向的内容是可以修改的。
PS:若在类中定义常量,一般使用staic关键字,定义为静态全局变量,类的所有对象共享该变量,方便修改。
2.final修饰方法
final修饰的方法不能被覆盖重写
3.final修饰类
final修饰的类不能被继承,它没有子类。JDK中的String类就是一个典型的final类。
面试问题: 为什么String类要使用final修饰?
解答:
1.被final修饰的类不能被继承,没有子类。限制了String类被扩展或者修改的可能性,这样的话,对于String这个类型就不存在多态,保证所有使用JDK的使用者,大家用的String类都是相同的版本,使用的方法也都完全一致。
2.String 一旦被创建是不能被修改的。 类加载器要用到字符串,不可变性提供了安全性,以便正确的类被加载。
3.如果String类允许被定义很多子类,那么在进行对字符串的各种操作时,不同的子类之间的细微差别可能会出现问题。