简介

在 Java 中我们把 final 称为终结器,在 Java 中可以使用 final 定义类、方法、属性。通过 final 修饰以后,可以表示其修饰的类、方法和变量不可改变。

使用 final 定义类

使用 final定义的类不能够有子类,并且该类中的成员方法都默认为final方法。

final class A{     //使用 final 定义一个类    
}    

// 这里在 eclipse 上面会提示: The type B cannot subclass the final class A
// 并且提示要将 class A 中的 final 去掉
class B extends A{}    //新建一个类去继承 final 类

使用 final 定义的方法

使用 final 定义的方法不能被子类覆写。如果不希望子类重写父类的某个方法,那就使用 final 关键字。

在一些时候由于父类中的某些方法具备某些隐藏的特性,那么并且子类必须使用此方法操作的时候,就加上 final 关键字。意思是说,子类不要去破坏这个方法的重要的作用。

class A{
    // 使用 final 定义 方法
    public final void fun(){}    
}

class B extends A{    //新建一个类去继承 final 类
    // 在 eclipse 中这行就会报错,直接就提示了需要将 A类中的 fun() 的 final 去掉
    public void fun(){
    }
}    

使用 final 定义的变量

当使用 final 修饰变量时,表示该变量一旦获得了初始值之后就不可被改变。final 既可以修饰成员变量,例如:类变量和实例变量,也可以修改局部变量和形参。用 final 修饰的变量不可以被改变,一旦获得初始值之后,该 final 变量的值就不能被重新赋值。

定义常量

class A{
    
    // 使用final 来修饰变量
    final double GOOD = 100.0;
    
    // 使用 final 定义 方法
    public final void fun(){
        
        // 这里会报错提示 将 GOOD 修饰的 final 去掉
        GOOD = 200;
    }    
}

全局常量

使用 public static final 声明的就是全局常量

public static final String CONF_ID = "Windows"; 

static 的数据保存在公共数据区,所以此处的常量就是一个公共常量。
final 声明的数据,是不能修改的,所以上面的代码定义的变量就成为了全局使用的常量。


Wayfreem
241 声望33 粉丝

一个后端工程师,偏偏喜欢前端。