【JavaSE】final關鍵字
阿新 • • 發佈:2018-12-19
final關鍵字-終結器(表示有最終的,不可修改的含義)
1.final修飾類(String類以及8大基本資料型別包裝類)
當一個類被final關鍵字修飾,表示該類不能擁有子類(該類不允許被繼承)
一旦一個類被final修飾,該類的所有方法都會預設加上final。(成員變數(屬性)不會加final)
final class Person{} class Student extends Person{} //繼承一個被final修飾的類 public class test{ public static void main(String[] args){ new Student(); } }
2.final修飾方法
當一個方法被final修飾,明確表明該方法不能被覆寫
當一個方法被private修飾後,相當於加了final關鍵字
當一個類中的所有方法都被final修飾後,這個類還是可以被繼承的
class Person{ public final void fun(){} } class Student extends Person{ public void fun(){} //覆寫父類的方法 } public class test{ public static void main(String[] args){ new Student(); } }
3.final修飾屬性-常量
a.final修飾普通資料型別的成員變數(最主要的用途)
被final修飾的成員變數必須在宣告時初始化(構造快或構造方法中初始化),並且初始化後值無法被修改。
class Person{ public final int a = 5; //宣告的時候初始化 // public Person(){ // a = 5; //構造方法中初始化 // } // { // a = 5; //構造快中初始化 // } } public class test{ public static void main(String[] args){ System.out.println(new Person().a); } }
注意:在主方法中不能用static修飾變數
final 變數-常量(值不能改變,每個物件都有自己的final變數,在物件產生時初始化)
static final - 全域性常量(所有物件共享此變數,並且在類載入時初始化,效率較高,通過類名呼叫)(宣告時或者靜態塊初始化)(推薦)
class Person{
public final int a = 5;
public staic final int b = 10;
}
b.final修飾引用資料型別的變數(值不能改變)
被final修飾的變數,值不能變,型別也不能改變
資料型別的轉換:
class Person{
byte b1=2, b2=2, b5, b8;
final byte b3=4, b4=5, b7=8;
public void fun(){
//語句1
b5 = b1+b2; //b5是byte型,b1和b2會轉為int型
//語句2
b8 = b3+b4; //正確
//語句3
b3 = b1+b5; //b3為byte型,值不能被改變
//語句4
b5 = b3+b8; //b5為byte型,b8會變為int型(必須強轉)
}
}