「这是我参与11月更文挑战的第21天,活动详情查看:2021最后一次更文挑战」。
茫茫人海千千万万,感谢这一秒你看到这里。希望我的文章对你的有所帮助!
愿你在未来的日子,保持热爱,奔赴山海!!
题记:关于
final关键字,它也是我们一个经常用的关键字,可以修饰在类上、或者修饰在变量、方法上,以此看来定义它的一些不可变性!像我们经常使用的String类中,它便是
final来修饰的类,并且它的字符数组也是被final所修饰的。但是一些final的一些细节你真的了解过吗?从这篇文章开始,带你深入了解
final的细节!
final的第一印象
我相信大家对于final的第一印象绝对来自这一道面试 final、finally、finalize这三者有什么区别吗?
final:修饰符(关键字)有三种用法:
1. 如果一个类被声明为 final,意味着它不能再派生出新的子类,即不能被继承,因此它和 abstract 是反义词。
2. 将变量声明为 final,可以保证它们在使用中不被改变,被声明为 final 的变量必须在声明时给定初值,而在以后的引用中只能读取不可修改。
3. 被声明为 final 的方法也同样只能使用,不能在子类中被重写。
finally: 通常放在try..catch..处理异常中,代表着程序无论正常执行还是发生异常,这里的代码都会执行。 一般是把释放资源的代码放在finally块中。
finalize: 是Object类中定义的方法,Java中允许使用finalize()方法在垃圾收集器将对象从内存中清除出去之 前做必要的清理工作。这个方法是由垃圾收集器在销毁对象时调用的。
复制代码
对吧,没讲错,我也是在背诵八股文的时候,才会发现以前根本不会专门了解的知识点。但是从今天,我将带大家全新认识下final这一个关键字!!!Let's GO~
final的基本使用
今天我们先讲解final如何去使用它,对于它的定义大家也应该或多或少的了解到了,或者看上面的答案即可。
首先你必须知道final如何去使用,才能更加深入的去了解它,剖析它。
final关键字的使用以下有三种特点:
- 如果一个类被声明为
final,意味着它不能再派生出新的子类,即不能被继承。 - 将变量声明为
final,可以保证它们在使用中不被改变。但是,被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取不可修改。 - 被声明为
final的方法也同样只能使用,不能在子类中被重写。
修饰类
如果一个类被声明为 final,意味着它不能再派生出新的子类,即不能被继承。而在Java中,也可以看到许多类是final的,譬如String、Interger以及其他包装类。
// String类
public final class String
implements java.io.Serializable, Comparable<String>, CharSequence {...}
// Integer类
public final class Integer extends Number implements Comparable<Integer> {...}
复制代码
那我们具体来看看是不是真的不能被继承呢?
package com.nz.test;
/**
* 测试是否真的不可以修饰类!
*/
public class ClassFinalTest {
}
// 定义一个运动员父类,并使用final修饰
final class SportMan{}
// 定义一个田径运动员子类,看能不能继承父类
class AthleticsMan extends SportMan{}
复制代码
我们可以代码结合图看出,在编译期间,父类会被final修饰,当子类继承该父类的时候,就会报错。
🌸总结
相信各位看官都对final这一个关键字有了一定了解吧,其实额外扩展自己的知识面也是相当有必要滴,不然别人追问你的时候,你会哑口无言,而一旦你自己每天都深入剖析知识点后,你在今后的对答中都会滔滔不绝,绽放光芒的!!!对吧,我们还有一把东西等着我们探索和摸索中!那我们继续期待下一章的final的内容吧!欢迎期待下一章的到来!
让我们也一起加油吧!本人不才,如有什么缺漏、错误的地方,也欢迎各位人才大佬评论中批评指正!当然如果这篇文章确定对你有点小小帮助的话,也请亲切可爱的人才大佬们给个点赞、收藏下吧,一键三连,非常感谢!
学到这里,今天的世界打烊了,晚安!虽然这篇文章完结了,但是我还在,永不完结。我会努力保持写文章。来日方长,何惧车遥马慢!
感谢各位看到这里!愿你韶华不负,青春无悔!




近期评论