烽天降临联盟-网游跨服战场活动门户

Java 类库中有哪些常见的 final 类, 这些类为什么要用 final 修饰

3819

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 修饰类的作用是为了保护封装

有什么不对的地方欢迎指正,谢谢