1、final修饰类
被final修饰的类不能被继承,因此final类的成员方法也不能被覆写,被final关键字修饰的类没有子类,因此类的实现细节也无法改变,无法被扩展。final类中的所有成员方法都会被隐式地指定为final方法,final类中的成员变量可以根据需要设为final。
2、final修饰方法
一个类中的方法如果被final关键字修饰,则其子类无法覆写该方法,只能被子类继承。如果父类中的某个方法不想被其子类所覆写,可将该方法定义为final类型,另外,父类中的私有方法(即被private关键字修饰的方法)也不允许被子类所覆写,所以父类中被private关键字修饰的方法默认为final类型。
3、final修饰变量
final这个关键字的含义是“这是无法改变的”或者“终态的”;
(1)被final关键字修饰的基本数据类型,则其数值一旦在初始化之后便不能更改;
(2)如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象,但该引用所指向的对象的内容是可以发生变化的。原因为:引用数据类型存储的引用对象在堆内存中的地址,final修饰引用类型之后,要求该引用指向的堆内存空间(或者说该引用存储的堆内存地址)不能改变。
当用final修饰类的非静态成员变量时,成员变量的初始化有两种方式:
(3)在声明时进行初始化
当用final修饰类的静态成员变量时,静态成员变量的初始化方式有两种
(4)在静态初始化块中进行初始化
当用final修饰接口的静态变量时,其初始化方式只有一种:
(5)在声明时进行初始化
当用final修饰局部成员变量时,只需要保证在使用之前被初始化赋值即可。
4、final修饰参数
当方法参数为final类型时,你可以读取使用该参数,但是无法改变该参数的值。