Java 类库中有哪些常见的 final 类, 这些类为什么要用 final 修饰
首先来了解一下 final
final 是 java 中的关键字之一,作用是让被修饰后的成员(类,方法,变量等)不可变。
下面列举几个 java 类库中常见的 final 类:
1、java.lang包
包装类: Boolean,Character,Short,Integer,Long,Float, Double,Byte,Void (所有的包装类都为final类) 字符串类: String, StringBuilder,StringBuffer 系统类:Class,System,RuntimePermission,Compiler 数学类:Math,StrictMath 其他:Character.UnicodeBlock,ProcessBuilder,StackTraceElement
2、java.util包
UUID,Scanner,Optional 等
3、java.lang.reflect包
Array,Constructor,Field,Parameter,ReflectPermission
4、java.net包
HttpCookie,Inet4Address,Inet6Address,URL,URI 等
5、java.time包
DayOfWeek,Duration,Instant,LocalDate,LocalDateTime,LocalTime,MonthDay,OffsetDateTime,OffsetTime,Period,Year,YearMonth,ZonedDateTime,ZoneOffset
等等…
那么这些类为什么要用 final 修饰呢?
我们已经知道 final 的作用是让被修饰的成员不可变。那么类在不改动源代码的情况下。什么时候类(类的行为)会被改变呢?在被继承的时候,Java的多态特性会使类的行为发生改变。所以当类的所有行为要防止被修改时,就使用 final 修饰要被保护的类,使其不可被继承就不会有多态改变行为的可能。
总结:final 修饰类的作用是为了保护封装
有什么不对的地方欢迎指正,谢谢