为了性能 -- String类被广泛的使用 (随便的继承会导致性能降低)
若 String允许被继承, 由于它的高度被使用率, 可能会降低程序的性能,所以String被定义成final。为了安全 -- String类非常底层 (封装好提供给使用者并不希望被改动)
JDK中提供的好多核心类比如String,这类的类的内部好多方法的实现都不是java编程语言本身编写的,好多方法都是调用的操作系统本地的API,这就是著名的“本地方法调用”,也只有这样才能做事,这种类是非常底层的,和操作系统交流频繁的
总结分析过程:
1. 首先分析 String类的特点:
- 功能完善,内部多于操作系统本地API交互,自封闭性强(高内聚)
- 使用广泛 --》带来的性能问题
- final修饰类是终态类,阻止继承
继续分析 继承带来的坏处:- 提高了耦合度,复杂度提高导致性能下降;
- 破坏了封装,引出安全问题
- 性能
- 安全:封装到好处是安全,继承破坏封装,会带来安全问题。而String的特点就是它属于比较底层的类,封装了良好的方法足够使用,所以String也不需要被继承使用