final关键字
final 是 Java 中一个常用的关键字,被 final 修饰的对象将表示该对象不可被修改。
final 关键字在 Java 中有 4 种用法
- 修饰类
- 修饰方法
- 修饰变量
- 修饰参数
-
final 关键字可以修饰类
final class A { // ... }
当final修饰一个类时,表明其为最终类,它不能被继承,并且类中所有的属性和方法都默认是final类型,如String,Integer等包装类均为final类。
被 final 修饰的类将不可以被其他类继承,表示当前类已经足够完美了,已经不需要再被其他类继承了
2.final 关键字可以修饰方法
class A {
public final void func() {
// ...
}
}
被final修饰的方法不可被重写。它可以防止任何继承类修改方法的意义和实现,而且,使用final修饰方法的执行效率一般高于普通方法
被 final 修饰的方法表示当前方法不可被修改,不可以被继承当前类的类重写
3.final 关键字可以修饰变量
class A {
public void func() {
private final int num = 0;
num = 1; // err
}
}
使用final修饰的变量称为常量(大写字母表示),只能被赋值一次,且赋值之后无法改变,这里的变量又可以分为基本类型变量和引用类型变量,final修饰基本类型变量时,变量的值不可改变;修饰引用变量时,变量指向的对象地址不可改变。
被 final 修饰的变量在进行初始化之后,不可以修改其内容,否则无法通过编译。
4.final 关键字可以修饰参数
class A {
public void func(final int a, int b) {
a = 1; // err
b = 1;
System.out.println(a + b);
}
}
1234567
final修饰的参数有一个只读的属性,即可以读取该参数,但是无法更改参数的值,同修饰变量一样,当参数为基本类型时,该参数的值不可改变;当参数为引用类型时,参数的引用地址不可改变
被 final 修饰的参数 a 在整个 func 方法内不可以被修改,而 b 可以。