天天看點

java 文法 —— final

final 成員變量的初始化問題;

指向一個 static 型私有成員(僅調用一次),

final 修飾的引用,不可以再指向别的引用,但 final 修飾的引用,其指向的對象,其值卻可以修改,相當于常量指針(const int*,指針是常量,不可以再指向别的記憶體,指向的記憶體卻可以繼續修改),而不是指針常量(const* int)。

防止其他人覆寫該方法;

可以有效地關閉動态綁定,或者說告訴編譯器不需要對其進行動态綁定;

在 Java 中,除了 static 方法和 final 方法(private 方法屬于 final 方法),其他所有的方法都是後期綁定(也叫動态綁定);

綁定的含義即是:将一個方法調用同一個方法主體關聯起來;

動态綁定(後期綁定):在運作時根據對象的類型進行綁定;

Java 中的多态便是通過動态綁定實作的;

key 和 value,成員變量都是 public 和 final 的,是為了使 Pair 成為隻讀的資料傳輸對象(或信使);

private 方法屬于 final 方法,final 方法在編譯期即已綁定;

期望輸出 public f(),但由于 private 方法被自動認為是 final 的,且對導出類是屏蔽的。在此種情況下,Derived 類中的 f() 方法是一個全新的方法。隻有非 private 方法才可以被覆寫,但還需要密切注意覆寫 private 方法的現象,這時雖然編譯期不會報錯,失去了多态機制,也不會按照所期望的來執行。是以,在派生類中,對于基類的 private 方法,最好采用不同的名字。

final 修飾對象引用,并非說對象其自身不可被修改,而是對象引用恒定不變,也即一旦引用被初始化指向一個對象,就無法再把它改為指向另一個對象(對象本身卻是可以被修改的,事實上,Java 并未提供使任何對象恒定不變的途徑)。這一限制同樣适用于數組,因數組也是對象。

來看 final 修飾這樣一個簡單的對象引用:

首先來看數組的例子

final 修飾對象引用,或者數組(數組也是一種引用),此對象引用不可以再指向别的對象。

上一篇: JAVA基礎文法
下一篇: 初識Java