String 类为何是final

1、什么是final

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

1.final修饰类spa

被final修饰的类不能被继承,即他不能拥有本身的子类,不然会报错。对象

首先 建立一个用fianl 修饰的父类Test继承

而后建立一个子类test 继承Testtest

点进去看一下报警信息,效率

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

2.final修饰方法变量

被final 修饰的方法不能被重写,可是:权限

重写的前提是子类能够从父类中继承此方法,因此当父类中被final修饰的方法的访问权限为private时,子类中就能够重写此方法。程序

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

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

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

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

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

final修饰的变量,不管是类属性,对象属性,形参仍是局部变量,都须要进行初始化操做。

(1)修饰变量

能够看到被final修饰的变量报错了,是由于final修饰的字段fa没有被初始化,因此当变量被final修饰是要赋值初始化,当初始化以后就不会报错。

(2)修饰类属性

也是须要初始化的

2、String 类为何是final

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

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

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

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

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

相关文章
相关标签/搜索