final关键字是Java中的一个重要的修饰符,它可以用来修饰类、方法和变量。final关键字可以帮助我们更好地控制程序的行为,使得程序更加健壮。
1. 修饰类:当一个类被声明为final时,它就不能被继承了,也就是说不能有子类。例如String、Math、Integer这些都是final类。
public final class MyClass { // ... }
2. 修饰方法:当一个方法被声明为final时,它就不能被子类重写了。例如Object中的equals()、hashCode()、toString()都是final方法。
public final void myMethod() { // 方法前加上 final 关键字 // ... }
3. 修饰变量:当一个变量被声明为final时,它的值就不能被改变了。例如常量PI=3.1415926...就是一个final变量。
public static final double PI = 3.1415926; // 加上 static 和 final 关键字
使用final关键字有以下几大优势:
因为使用了final关键字后,JVM会对它进行优化处理,比如将它直接替换成实际的值或者将它当作常量来处理。这样就大大提升了性能。
因为使用了final关键字后,子类就不能覆盖该方法或者变量了,所以在代码复用上也有很大的好处。
因为使用了final关键字后,子类就不能覆盖该方法或者变量了,所以在代码测试上也有很大的好处。因此在开发中应该尽量使用final关键字来保证代码的健壮性和正确性。
final关键字不允许修改或替换其原始值或定义。
final关键字可以在以下三个上下文中使用:
如果一个变量被声明为final,它只能被赋值一次。最终变量的值在设置后不能修改。
变量声明包括局部变量的声明,方法/构造函数的形式参数,实例变量和类变量。
变量声明包括局部变量的声明,方法/构造函数的形式参数,实例变量和类变量。
final int YES = 1;
我们可以只设置一次final变量的值。
有两种方法来初始化final变量:
但是,我们必须在第一次读取最终变量之前初始化它。
你可以声明一个局部变量final。如果将局部变量声明为空的最终变量,则必须在使用前初始化它。
我们可以声明一个参数final。当调用方法或构造函数时,参数将使用实际参数的值自动初始化。
因此,您不能更改方法或构造函数体内的最终形式参数的值。
我们可以声明一个实例变量final和blank final。
空白最终实例变量必须初始化一次,并且只有在调用类的任何构造函数时才初始化一次。
我们可以声明一个类变量final和blank final。我们必须在其中一个静态初始化器中初始化一个空的最终类变量。
引用变量存储对象的引用。最终引用变量意味着,一旦引用一个对象(或null),它就不能被修改以引用另一个对象。
以下代码显示了test2()方法的最终形式参数x:
public void test2(final int x) {
如果我们有一个类的多个静态初始化器,我们必须在一个静态初始化器中初始化所有空的最终类变量一次。
public class Main { public static final int YES = 1; public static final int NO = 2; public static final String MSG; static { MSG = "final static variable"; } }
如果一个类被声明为final,它不能被扩展(或子类化)。
如果一个方法声明为final,它不能在包含该方法的类的子类中重新定义(覆盖或隐藏)。
Java面向对象的设计 -Java 内部类什么是内部类?作为包的成员的类被称为顶级类。一个类可以在另一个类中声明。这种类型的类称为...
Java面向对象设计 - Java标准注释Java API定义了许多标准注释类型。以下部分讨论了在java.lang包中定义的四种最常用的标准注释。...
Java面向对象设计 -Java接口什么是接口?Java中的接口定义了一个引用类型来创建抽象概念。接口由类实现以提供概念的实现。在Java...
Java面向对象设计 -Java接口实现实现接口接口指定对象必须提供的协议。类可以提供接口的抽象方法的部分实现,并且在这种情况下,...