final 和 finally 关键字

简介: final 和 finally 关键字

一、final

final: 可以修饰类、成员变量和成员方法。


类:不能被继承(比如 String、StringBuilder、StringBuffer、Math,不可变类),其中所有的方法都不能被重写(这里需要注意的是不能被重写,但是可以被重载,这里很多人会弄混),所以不能同时用 abstract 和 final 修饰类(abstract修饰的类是抽象类,抽象类是用于被子类继承的,和final起相反的作用)

方法:不能被重写,但是不影响子类使用父类中被final修饰的方法

成员变量:不可变的。如果成员变量是基本数据类型,初始化之后成员变量的值不能被改变。如果成员变量是引用类型,那么它只能指向初始化时指向的那个对象,不能再指向别的对象,但是对象当中的内容是允许改变的。


什么时候使用 final 这个关键字?

       把方法锁定,以防任何继承类修改它的含义

二、finally

使用环境:


通常和try catch搭配使用,保证不管有没有发生异常,资源都能够被释放(释放连接、关闭IO流)


功能:

       当try中有return时执行顺序:return语句并不是函数的最终出口,如果有finally语句,这在return之后还会执行finally(return的值会暂存在栈里面,等待finally执行后再返回)

相关文章
|
6月前
|
消息中间件 Kubernetes NoSQL
c++11 关键字 override 与 final
c++11 关键字 override 与 final
|
存储 Cloud Native Linux
C++ 关键字override,final的作用
C++ 关键字override,final的作用
|
3月前
|
Java
final、finalize 和 finally 之间的区别
【8月更文挑战第22天】
51 0
|
3月前
|
存储 Java 编译器
关键字: final详解
掌握final关键字的使用对于Java程序员来说至关重要。它不仅能够提高程序的安全性和清晰性,还可以帮助编译器在一些情况下进行优化。恰当使用final可以使你的Java代码更加健壮、高效。
44 0
|
Java API
每日一道面试题之final、finally、finalize 有什么区别?
每日一道面试题之final、finally、finalize 有什么区别?
|
6月前
|
C#
29.C#关键字throw初步学习
29.C#关键字throw初步学习
83 0
|
Java 编译器 C#
C#中的override和new关键字
在 C# 中,派生类可以包含与基类方法同名的方法。 基类方法必须定义为 virtual。 如果派生类中的方法前面没有 new 或 override 关键字,则编译器将发出警告,该方法将有如存在 new 关键字一样执行操作。 如果派生类中的方法前面带有 new 关键字,则该方法被定义为独立于基类中的方法。 如果派生类中的方法前面带有 override 关键字,则派生类的对象将调用该方法,而不是调用基类方法。 可以从派生类中使用 base 关键字调用基类方法。
77 1
|
Java
关键字final
关键字final
46 0
|
开发者 Python
Finally 关键字的使用 | 学习笔记
快速学习 Finally 关键字的使用