一、什麼是final關鍵字?
final是最終的意思,可以修飾類,方法,變量
二、final 修飾的特點
修飾類:表明該類是最終類,不能被繼承
修飾方法: 表明該方法是最終方法,不能被重寫
修飾變量: 表明該變量是常量,變量第一次指派後,不能再次被指派(有且隻能指派一次)
三、final修飾變量的注意
* 變量是基本類型:指的是基本類型的"資料值"不能發生改變。
* 變量是引用類型:指的是引用類型的"位址值"不能發生改變,但是位址裡面的内容是可以發生改變的。(位址值不能變,資料值可以變)
* 修飾局部變量時可以先定義後指派,
修飾成員變量時必須定義時完成指派或者在構造方法中指派
引用資料類型有: 類,接口,數組,枚舉
四、案例講解
1.案例(修飾類)
final class Father extends Test{
//目的:為了代碼安全
//final修飾的類不能被繼承(沒有子類),可以繼承别人
}
class son extends Father{ //報錯
}
執行效果
2.案例(修飾方法)
class Father {
public final void run(){ //final修飾的方法不能被重寫
//可以被子類去用,但不能被重寫
}
}
class Son extends Father{
@Override
public void run(){ //報錯
}
}
執行效果
3.案例(修飾基本資料類型變量)
public class Test2 {
public static void main(String[] args) {
//變量是基本類型的
final int a=19; //被final修飾後不是變量了,是常量隻能被指派一次,後面再指派會報錯
a=18; //第二次指派報錯
method(20); //第一次賦資料值
}
public static void method(final int b){
b=200; //第二次賦資料值報錯
}
}
執行效果
4.案例(修飾引用資料類型變量)
//變量是引用資料類型的
final int [] arr={11,22,33};
arr[0]=110; //修過裡面的内容不報錯
arr=new int[10]; //第二次賦予位址值報錯
final Student stu=new Student();
stu.age=100; //stu.age為位址值裡面的内容,這個是可變得
System.out.println(stu.age); //age=100
stu=new Student(); //第二次賦予位址值報錯
執行效果