final关键字
2022/4/10 23:13:16
本文主要是介绍final关键字,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
final关键字
final可以修饰类、属性、方法和局部变量
使用到final的情况:
-
当不希望类被继承时,可以用final修饰
-
final class Person{}
-
-
当不希望父类的某个方法被子覆盖(重写),使用final修饰方法
-
public final void function(){}
-
-
当不希望某个属性的值被修改,使用final修饰
-
final double TAX_RATE = 0.1;
-
-
当不希望某个局部变量被修改,可以使用final修饰
-
final double TAX_RATE=0.08
-
final注意事项和细节
-
final修饰的属性又叫常量,一般用XX_XX_XX来命名
-
final修饰的属性在定义时,必须赋初值,并且以后不能再修改,赋值可以在如下位置之一[选择一个位置赋初值即可] :
- 在定义时
public final double TAX RATE=0.08;
- 在构造器中
public AA() { //构造器中赋值 TAX_RATE2 = 1.1; }
- 在代码块中。
{ //在代码块赋值 TAX_RATE3 = 8.8; }
-
如果final修饰的属性是静态的,则初始化的位置只能是
-
在定义时
-
在静态代码块
-
不能在构造器中赋值。(静态属性在类加载就会初始化,而构造器此时还未被调用)
-
public static final double TAX_RATE1 = 99.9; public static final double TAX_RATE2; static { TAX_RATE2 = 3.3; }
-
-
final类不能继承,但是可以实例化对象。
final class Person{ } Person person = new Person();
-
如果类不是final类,但是含有final方法,则该方法虽然不能重写,但是可以被继承,遵守继承机制,可以被子类使用。
-
如果一个类是一个final类,就没有必要用final修饰其中的方法
-
final不能修饰构造方法
-
fianl和static搭配,效率更高,不会导致类加载
-
System.out.println(Person.num);//使用num时不会导致类的加载,不会输出静态代码块的内容 class Person{ public static final int num = 100; static{ System.out.println(“Person 静态代码块被执行”) } }
-
-
包装类(Integer Double Float Boolean等都是final),String也是final 不能被继承
这篇关于final关键字的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-04-26敏捷开发:想要快速交付就必须舍弃产品质量?
- 2024-04-26静态代码分析的这些好处,我竟然都不知道?
- 2024-04-26你在测试金字塔的哪一层?(下)
- 2024-04-26快刀斩乱麻,DevOps让代码评审也自动起来
- 2024-04-262024年最好用的10款ER图神器!
- 2024-04-2203-为啥大模型LLM还没能完全替代你?
- 2024-04-2101-大语言模型发展
- 2024-04-17基于SpringWeb MultipartFile文件上传、下载功能
- 2024-04-14个人开发者,Spring Boot 项目如何部署
- 2024-04-14RAG应用开发实战02-相似性检索的关键 - Embedding