在Java中,final修饰符可以修饰类、属性和方法,final有“最终”、“不可更改”的含义,所以在使用final关键字时需要注意以下几点:
-
使用final修饰类,则该类就为最终类,最终类不能被继承。
-
使用final修饰方法,则该方法不能被子类覆盖。
-
使用final修饰变量的变量是常量,常量不可修改。
1. final修饰类
使用final修饰类,则该类就为最终类,最终类不能被继承。
public final class Person {
}
由abstract修饰的类是需要被继承的,而由final修饰的类是不能被继承的,所以final和abstract不能在定义类时同时使用。
2. final修饰方法
使用final修饰方法,则该方法不能被子类覆盖。
public class Person {
public final void hello(){
System.out.println("hello");
}
}
3. final修饰变量
使用final修饰变量,可以修饰基本类型和引用类型。
基本类型,表示基本变量数据值不能改变,只能一次赋值以后不能被修改。
引用类型,引用类型地址值不能再改变,即不能再次执行new操作;引用类型的值可以改变。
public class TestDemo {
@Test
public void test(){
//final修饰基本类型,只能一次赋值以后不能被修改
final int num;
num = 1; //等价于final int num = 1;
System.out.println(num);
// num = 2; 异常
//final修饰引用类型,引用类型地址值不能再改变,即不能再次执行new操作;引用类型的值可以改变。
final int[] nums = new int[2];
nums[0] = 1;
nums[1] = 2;
System.out.println(nums[0]);
System.out.println(nums[1]);
nums[0] = 3;
nums[1] = 4;
System.out.println(nums[0]);
System.out.println(nums[1]);
// nums = new int[3]; 异常
}
}