Final关键字
final是最终的含义。
final用于修饰:类,方法,变量。1.final修饰类,类不能被继承了。
2.final可以修饰方法,方法就不能被重写了。
3.final修饰变量总规则:变量有且仅能被赋值一次。拓展:final和abstract的关系?
互斥关系,不能同时修饰类或者同时修饰方法!!
变量
局部变量
final修饰变量的总规则:有且仅能被赋值一次。
变量有几种?
- 成员变量
– 静态成员变量:有static修饰,属于类,只加载一份。
– 实例成员变量:无static修饰,属于每个对象,与对象一起加载。- 局部变量
– 只能方法中,构造器中,代码块中,for循环中,用完作用范围就消失了。
final修饰局部变量:
– 让值被固定或者说保护起来,执行的过程中防止被修改。
public class FinalDemo02 {
public static void main(String[] args) {
final int age = 12; // 第一次赋值
// age = 20; // 第二次赋值,报错!
final double r = 3.14;
//r = 12.3;
buy(0.8);
}
public static void buy(final double rate){
//rate = 0.7; // 第二次赋值! ,报错!
}
}
静态成员变量
final修饰静态成员变量,变量变成了常量。
常量:有public static final修饰,名称字母全部大写,多个单词用下划线连接。拓展:
final修饰静态成员变量可以在哪些地方赋值一次:
1.定义的时候赋值一次。
2.可以在静态代码块中赋值一次。
public class FinalDemo03 {
// 常量:有public static final修饰,名称字母全部大写,多个单词用下划线连接。
public static final String SCHOOL_NAME = "白马" ;
public static final String SCHOOL_NAME1 ;
static{
SCHOOL_NAME1 = "白马1";
//SCHOOL_NAME1 = "白马2"; // 报错,第二次赋值!
}
}
另外,main可能会执行多次,所以在static中赋值是最好的,只会执行一次。
实例变量
final修饰实例成员变量。(了解。用不到)
final修饰变量的总规则:有且仅能被赋值一次。
拓展:
final修饰实例成员变量可以在哪些地方赋值1次:
1.定义的时候赋值一次。
2.可以在实例代码块中赋值一次。
3.可以在每个构造器中赋值一次。