final 关键字:用来修饰类,方法,成员变量,局部变量
表示最终的不可变的
1、final修饰一个类
表示当前的类不能有子类,也就是不能将一个类作为父类
格式:
public final class 类名称 {
class body
}
一个类如果是final的,那么其中所有成员方法都不能被覆盖重写(因为没有子类),但是该类可以有父类
2、final关键字修饰成员方法
这个方法就是最终方法,也就是该类的子类不能覆盖重写这个方法
对于类、方法来说abstract、final不能同时使用,因为他们是矛盾的,abstract的方法必须覆盖重写,但是final的方法不能覆盖重写
3、final修饰局部变量
一旦使用final修饰局部变量,就不能改变,也就是一旦赋值不能更改,而且只能赋值一次,哪怕第二次赋值是一样的也不行
对于引用类型来说,使用关键字final修饰,不可变的含义就是地址值不能改变,但是该地址指向的对象的内容是可以改变的
4、final关键字修饰成员变量
对于成员变量来说,一旦使用final关键字,也是一样不能改变
a、和局部变量的不同点在于,成员变量有默认值,因此必须手动赋值
b、final的成员变量可以定义的时候直接赋值,或者使用构造方法在构造方法体里面赋值,但是只能二者选其一
c、如果没有直接赋值,那就必须保证所有重载的构造方法最终都会对final的成员变量进行了赋值