1、final所修饰的基本数据类型
用final修饰的成员变量表示常量,只能被赋值一次,赋值后值无法改变! final修饰的变量有三种:静态变量、实例变量和局部变量,分别表示三种类型的常量。
一旦给final变量初值后,值就不能再改变了。 另外,final变量定义的时候,可以先声明,而不给初值,这种变量也称为final空白,无论什么情况,编译器都确保空白final在使用之前必须被初始化。但是,final空白在final关键字final的使用上提供了更大的灵活性,为此,一个类中的final数据成员就可以实现依对象而有所不同,却有保持其恒定不变的特征。
2、final所修饰的引用类的变量类型
当被final修饰变量是一个引用时,那么这个变量就不能再修改引用对象了,例如:String str是一个引用,str指向了一个字符串,那么str就不能再被赋值,原因是String类型的变量赋值的本质是改变引用对象,由于str被final所修饰,不可以改变引用对象,所以就不能再被赋值。
3、final所修饰的类
final类不能被继承,因此final类的成员方法没有机会被覆盖,默认都是final的。在设计类时候,如果这个类不需要有子类,类的实现细节不允许改变,并且确信这个类不会再被扩展,那么就设计为final类。
4、final所修饰的方法
若一个父类里有final方法,那么该方法不能被子类的方法所覆盖,但可以被继承。