String 类为什么是final

一、什么是final

final 意思是“最终的,最后的”,我认为是不可变的,他可以修饰类,变量和方法。所以可以认为他所修饰的类,变量和方法都是不能改变的。

1.final修饰类

被final修饰的类不能被继承,即他不能拥有自己的子类,否则会报错。

首先 创建一个用fianl 修饰的父类Test

然后创建一个子类test 继承Test

点进去看一下报警信息,

意思是类test不能被final修饰的类Test。

2.final修饰方法

被final 修饰的方法不能被重写,但是:

重写的前提是子类可以从父类中继承此方法,所以当父类中被final修饰的方法的访问权限为private时,子类中就可以重写此方法。

(一)父类中方法控制权限为public

首先在父类中创建一个方法,并用final修饰

然后在子类中中重写work方法,可以看到当子类重写父类中final修饰的方法是,报错了,报错信息如下:

即子类不能重写父类中被final修饰的方法

(二)父类中方法控制权限为private

final修饰的变量,无论是类属性,对象属性,形参还是局部变量,都需要进行初始化操作。

(1)修饰变量

可以看到被final修饰的变量报错了,是因为final修饰的字段fa没有被初始化,所以当变量被final修饰是要赋值初始化,当初始化之后就不会报错。

(2)修饰类属性

也是需要初始化的

二、String 类为什么是final

结合以上的基础知识,我们来分析一下为什String类是final的?

这个例子标明,让一个普通类继承String类,结果发现报错了.

即Test不能是final类String的子类,这里已经很明显地看出String类是final的,但是到底是为啥子呢?

(1)由于String类不能被继承,所以就不会没修改,这就避险了因为继承引起的安全隐患

(2)String类在程序中出现的频率较高,为了避免安全隐患,它每次出现是都用final来修饰,这无疑会降低程序的执行效率,所以干脆直接将其设为final提高效率

猜你喜欢

转载自my.oschina.net/u/3359663/blog/1615317
今日推荐