版权声明:来至蜀山雪松 https://blog.csdn.net/jianxia801/article/details/87306947
目录
1、final修饰符特性
1.1、可修饰内容
final在Java中是一个保留的关键字,final可修饰:类、方法、类成员变量、方法体内的本地变量
一旦你将引用声明作final,你将不能改变这个引用了,编译器会检查代码,如果你试图将变量再次初始化的话,编译器会报编译错误。
1.2、被修饰内容特征
final修饰的类:
final类通常功能是完整的,它们不能被继承。Java的JDK之中有许多类是final的,譬如String、System、Interger以及其他包装类。如下图所示:动物静态类,Cat(猫类)无法继承动物静态类的
final修饰的方法:
不能被重写, 一个类的private方法会隐式的被指定为final方法。 如果父类中有final修饰的方法,那么子类不能去重写。
final修饰的成员变量:
- 必须要赋初始值,而且是只能初始化一次。
- 被fianl修饰的成员变量赋值,有两种方式:1、直接赋值 2、全部在构造方法中赋初值。
- 如果修饰的成员变量是基本类型,则表示这个变量的值不能改变。
- 如果修饰的成员变量是一个引用类型,则是说这个引用的地址的值不能修改,但是这个引用所指向的对象里面的内容还是可以改变的。
2、应用场景
final修饰符 一般使用在常量类较多,final修饰常量: 如移动端访问接口的域名地址不可变的,以及一些系统常量和业务常量等等。final变量经常和static关键字一起使用,作为常量。
public class TaskConstant {
/**线上培训*/
public static int TASK_TYPE_ONLINE = 1;
/**线下培训*/
public static int TASK_TYPE_OFFLINE = 2;
/**新手任务*/
public static int TASK_TYPE_NEWER = 3;
/**app中待办事项的类型 1--新手任务, 2--职业规划, 3--培训任务*/
public static int APP_TODO_TYPE_NEWER = 1;
public static int APP_TODO_TYPE_ZYGH = 2;
public static int APP_TODO_TYPE_TASK = 3;
}
3、final知识要点总结
- final关键字可以用于成员变量、本地变量、方法以及类。
- final成员变量必须在声明的时候初始化或者在构造器中初始化,否则就会报编译错误。
- 你不能够对final变量再次赋值。
- 本地变量必须在声明时赋值。
- final方法不能被重写。
- final类不能被继承。
- 将类、方法、变量声明为final能够提高性能,这样JVM就有机会进行估计,然后优化。
- 按照Java代码惯例,final变量就是常量,而且通常常量名要大写:
4、面试询问关键点
- 被final修饰的类不可以被继承
- 被final修饰的方法不可以被重写
- 被final修饰的变量不可以被改变
- 被final应用于对象引用时,而不是基本类型时,其含义让人疑惑。对基本类型使用final不能改变的是他的数值。而对于对象引用,不能改变的是他的引用,而对象本身是可以修改的。
参考文章:
https://www.cnblogs.com/fangpengchengbupter/p/7858510.html
http://baijiahao.baidu.com/s?id=1601084106055683243&wfr=spider&for=pc