您的位置:

Java中public final关键字的使用

一、final关键字的概述

在Java中,final是一个关键字,可以用来修饰类、方法和变量。final修饰的类不允许被继承,修饰的方法不允许被子类重写,修饰的变量初始化后不可改变。

二、final关键字应用于变量

使用final修饰的变量必须被初始化,不可再次赋值。final变量表示一个常量,一旦初始化,其值不可改变。

public class FinalVariableDemo {
    public static void main(String[] args) {
        final int x = 10;
        // x = 20; // error: cannot assign a value to final variable x
        System.out.println(x);
    }
}

在上面的代码中,我们声明了一个final变量x,并初始化为10。当我们尝试给x再次赋值时,编译器会报错。

三、final关键字应用于方法

使用final修饰的方法不可被子类重写。如果在父类中某个方法实现已经足够完美,不需要子类来覆盖该方法的实现,那么可以使用final关键字将该方法标记为不可被重写。

public class FinalMethodDemo {
    public final void message() {
        System.out.println("Final methods cannot be overriden.");
    }
}

class ChildClass extends FinalMethodDemo {
    public void message() {
        System.out.println("This method cannot be overridden, but this message can be changed.");
    }
}

在上面的代码中,我们使用final关键字修饰了父类的message()方法。子类将无法覆盖该方法的实现,但可以更改该方法的输出信息。

四、final关键字应用于类

使用final修饰的类不可被继承,即该类不能有任何子类。

public final class FinalClassDemo {
    public void message() {
        System.out.println("This is a final class.");
    }
}

class ChildClass extends FinalClassDemo { // error: cannot inherit from final FinalClassDemo
    public void message() {
        System.out.println("This class cannot be extended.");
    }
}

在上面的代码中,我们使用final关键字修饰了父类FinalClassDemo,子类ChildClass无法继承该类。

五、public final关键字的作用

当public和final同时修饰一个变量时,该变量为常量,可被其他类访问,其值不可改变。

public class FinalVariableDemo {
    public static final int NUMBER = 10;

    public static void main(String[] args) {
        // NUMBER = 20; // error: cannot assign a value to final variable NUMBER
        System.out.println(NUMBER);
    }
}

在上面的代码中,我们声明了一个public和final修饰的常量NUMBER,值为10。其他类可以直接访问该常量,并且其值不可改变。

六、总结

final关键字可以用来修饰类、方法和变量,分别表示不可被继承、不可被重写和不可改变。public final修饰的变量为常量,可被其他类访问,不可更改。