- 修饰类,表示类不可被继承。
-
修饰方法,表示子类不可以覆盖此方法,但是本类可以重载此方法。
image.png
image.png - 修饰变量,表示变量一旦被赋值,就不能再修改它的值。
final修饰变量的更多细节
-
final 修饰类变量(被static修饰的),声明时赋值,或者在静态初始化块(Initialization block)中赋值。不能在运行时赋值。
image.png
image.png
-
final 修饰成员变量,声明时赋值,或者在非静态初始化块中赋值,或者在构造器中赋值,不能用其他方式设置赋值。
image.png -
final 修饰局部变量,所有局部变量使用前都必须赋值,与final无关。
基本数据类型与引用数据类型的情况
- final修饰的变量如果是基本数据类型,一旦被赋值,就不能再修改。
- final修饰的变量如果是引用数据类型(包括数组),一旦被初始化,就不能再指向另一个对象。但是 引用对象的成员变量值是可变得。
public class Person {
public String name;
public int age;
}
public class FinalRefTest {
public static void main(String[] args) {
final int[] array = new int[]{1, 2, 3, 4};
array[0] = 5;//合法
// array=null;//不合法
final Person p = new Person();
p.name = "zhangsan"; //合法
// p = null;//不合法
}
}
网友评论