java 修饰符 final

2021/01/17 Java基础知识 共 709 字,约 3 分钟
闷骚的程序员

1. final的含义

  1. final是种修饰符,用来修饰类、成员变量、成员方法、局部变量等。
  2. abstract修饰的类即抽象类,不能使用final关键字修饰;因为抽象类必须被子类继承以覆盖其中的抽象方法—-而final修饰的类为最终类,不允许有子类。
  3. abstract修饰的方法即抽象方法,不能使用final关键字修饰,因为抽象方法必须被子类去覆盖—-而final修饰的方法为最终方法,不允许被覆盖。

2. final修饰场景

2。1 修饰变量

final修饰成员变量和局部变量时,表示该成员变量和局部变量是常量。
既然是常量,则一旦初始化,在后续的整个代码运行中,常量的值是不能被重置的。
注意,常量的初始化是在.java文件被预编译成.class文件后就已经确定了常量的初始化内容,该内容被保存在.class常量池中。
常量一旦初始化则不允许被重置,是由Java编译器禁止的。
JVM动态运行中常量的值只是在加载完毕后从class常量池中复制到运行时常量池中的副本,由于
.class常量池中的常量一旦初始化则java编译器不允许重置它,因此JVM的运行时常量池中的常量自然也是不可能被重置的。
不论是成员常量还是方法常量,要求在使用前都必须手动初始化,且只能初始化一次。

tips:成员常量不会再像成员变量一样会由JVM自动初始化为默认值,所有的常量在使用前都必须手动初始化,否则编译报错!

2.2 修饰方法

final修饰方法时,表示该方法是最终方法,最终方法不能被覆盖。

2.3 修饰类

final修饰类时,表示该类是最终类,最终类不能有子类,即不能被继承。

3. 总结

final的所有特性都是由java编译器在编译阶段禁止的,和JVM运行状态没有任何关系。

文档信息

Search

    Table of Contents