1、final关键字
final关键字用于修饰类、方法和变量,它修饰的类、方法和变量是不可改变的
2、final修饰成员变量
final修饰的成员变量一旦有了初始值,就不能被重新赋值。所以,final修饰的成员变量必须在创建对象前对它初始化,否则编译编译报错。因为如果使用系统默认分配的 0、false、null等,那final将失去它的意义。(final修饰的成员变量需要程序员显式地指定初始值)
指定初始值方法:
- 类成员变量:必须在静态代码块或声明该变量时赋值
- 普通成员变量:必须在非静态代码块、声明该变量时或构造器中赋值
3、final修饰局部变量
系统不会对局部变量进行初始化,所以局部变量需要程序员显示赋值。final修饰局部变量时,既可以在定义时赋值,也可以在后面用到时赋值,但是只能赋值一次。
注:不可对final修饰的形参赋值
4、final修饰方法
final修饰的方法不可以被重写。(可以被重载)
特殊例子:final修饰一个 private 方法。这个方法对于子类时不可见的,所以子类无法重写该方法。如果子类定义一个与父类private方法相同的方法,这不属于重写,属于子类定义一个新方法。
5、final修饰类
final修饰的类不可被继承,防止子类重写父类方法,导致一些不安全的因素。
6、final修饰基本数据类型和引用类型的区别
final修饰基本数据类型变量时,不能对变量重新赋值,所以该变量不会被改变。
image.png
final修饰引用类型时,保存的仅仅是一个引用,它只保证该引用的地址不被改变,引用的内容仍然是可以被改变的。
从这个图来看,数组arr已经被改变了。
image.png
网友评论