一、final关键字使用范围
在Java中声明类、变量和方法时,可使用关键字final来修饰,表示“最终的”。
二、final关键字修饰类
final修饰的类不能被继承。提高安全性,提高程序的可读性。比如:String类、System类、StringBuffer类
语法格式:
final class A{
//属性、方法、构造器、代码块
}
包装类、String类都是final类,不能被继承
一般来讲,如果一个类是final类了(就说明没办法继承了),就没必要将方法弄成final了(连继承都没办法,就无从谈起重写了,因为继承关系是重写的前提),
中国古代,什么人不能有后代,就可以被final声明,称为“太监类”!
三、final关键字修饰方法
final修饰的方法不能被子类重写,比如:Object类中getClass()
语法格式:
权限修饰符 final 返回值类型 方法名(参数列表){
//程序代码
}
若类不是final类,但是含有final方法,则该方法虽然不能被重写,但是可以被继承
四、final关键字修饰变量
final修饰的变量(成员变量(属性)或局部变量(方法内定义的属性))即称为常量。名称大写,且只能被赋值一次。
final修饰的成员变量必须在定义时或在每个构造器中或代码块中(3选1)显式赋值,然后才能使用。
语法格式:权限修饰符 final type var = value; 【type是java数据类型,var是变量名,value是变量的值】
常量名要大写,内容不可修改。——如同古代皇帝的圣旨。
五、final修饰static 属性
static final 用来修饰属性表示全局常量(属性)
final修饰的static 属性必须在定义时或或代码块中(3选1)显式赋值,然后才能使用。不能在构造器中赋值。(因为构造器只有在创建对象时才会被调用,而静态变量的初始化在类加载时就要赋值)
final和static往往搭配使用,效率更高,不会导致类加载(因为底层编译器做了优化)(单用static,在使用时会导致类的加载)
语法格式:
权限修饰符 static final type var = value;【type是java数据类型,var是变量名,value是变量的值】