java關鍵字final有最終的,不可改變的含義,它可以修飾非抽象類、非抽象類成員方法和變量。

報錯:類"TestFinal"要么是abstract,要么是final的,不能兩個都是.
1.final修飾的類就是終極的.不能被其他類繼承,就不可能有子類.
2.由于final類沒有子類,其中的方法不可能被覆蓋,因此,final類中的
所有方法和變量都是final的,并不需要明確地將某個方法聲明為final.
public final class TestFinal{ public static final int I=1;//final類中的數據成員可以是final的 PRotected int j;//final類中的數據成員可以不是final的 public void f(){}//final類中的方法是final的,可以不明確聲明 public final void g(){}//final類中的方法可以聲明為final的,不過沒什么意義}
3.final方法不能被子類的方法覆蓋,但可以被繼承。
public class TestFinal extends FinalOnMethod{ public static void main(String[] args) { TestFinal tFinal=new TestFinal(); tFinal.One(); }}class FinalOnMethod{ public final void One(){ System.out.println("hello,我是一個final方法,但是我所在的類,沒有final修飾哦!!!!!!!!!!!!!"); }}
下面我們來重寫這個被final修飾過得方法.

編譯時就報錯了.
由此我們聯想到私有方法也是不可被繼承的.
因為系統把私有成員當做final處理.我們也可以將一個私有成員表示成fianl的.但是這沒什么意義.
4. final成員變量表示常量,只能被賦值一次,賦值后值不再改變,如果強行賦值會出現編譯錯誤。

5.final不能用于修飾構造方法.構造方法不存在被繼承,也就不可能被重寫,也就是說構造方法本身就是最終的,沒必要使用final標示.
新聞熱點
疑難解答