今天刚好遇到这个问题,查了一番资料后发现了一篇讲得比较透彻的文章,文章中部分模糊的地方我也通过手打展现出来了,方便阅读和理解。
今天的题目是:String类为什么是final的?
在回答这个问题之前,我觉得有必要搞清楚final到底是个什么?
一、理解final
望文生义,final意为“最终的,最后的”,我理解为“不能被改变的”,它可以修饰类、变量和方法。
所以我是否可以理解为被它所修饰的类、变量和方法都不能被改变呢?答案是”是“,因为有以下约束条件的存在:
1、final修饰类
被final修饰的类不能被继承,即它不能拥有自己的子类,否则会在编译期间报错。且看下面的例子:
第一步:创建一个用final修饰的父类Father
第二步:创建一个子类Son继承Father
如图所示,我们看到了报警信息,点进去一看,如下图所示: