一、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修饰的变量为常量,可被其他类访问,不可更改。