您好,登錄后才能下訂單哦!
這篇文章主要講解了“Java中的final關鍵字如何使用”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Java中的final關鍵字如何使用”吧!
子類可以在父類的基礎上改寫父類內容,比如,方法重寫。那么我們能不能隨意的繼承API中提供的類,改寫其內容呢?顯然這是不合適的。為了避免這種隨意改寫的情況,Java提供了final 關鍵字,用于修飾不可改變內容。
final: 不可改變。可以用于修飾類、方法和變量。
類:被修飾的類,不能被繼承。
方法:被修飾的方法,不能被重寫。
變量:被修飾的變量,不能被重新賦值。
格式如下:
final class 類名 { }
查詢API發現像 public final class String 、public final class Math 、public final class Scanner
等,很多我們學習過的類,都是被final修飾的,????目的就是供我們使用,而不讓我們所以改變其內容。
注意:如果一個類被final修飾那么這個類不能有任何的子類。一個類如果是final的,那么其中所有的成員方法都無法進行覆蓋重寫(因為沒子類。)
格式如下:
修飾符 final 返回值類型 方法名(參數列表){ //方法體 }
重寫被 final 修飾的方法,編譯時就會報錯。
對于類、方法來說,abstract關鍵字和final關鍵字不能同時使用,因為矛盾。有抽象方法的abstract類被繼承時,其中的方法必須被子類Override,而final不能被Override。
局部變量—基本類型
基本類型的局部變量,被final修飾后,只能賦值一次,不能再更改。
代碼如下:
public class FinalDemo1 { public static void main(String[] args) { // 聲明變量,使用final修飾 final int a; // 第一次賦值 a = 10; // 第二次賦值 a = 20; // 報錯,不可重新賦值 // 聲明變量,直接賦值,使用final修飾 final int b = 10; // 第二次賦值 b = 20; // 報錯,不可重新賦值 } }
思考,如下兩種寫法,哪種可以通過編譯?
寫法1:
final int c = 0; for (int i = 0; i < 10; i++) { c = i; System.out.println(c); }
寫法2:
for (int i = 0; i < 10; i++) { final int c = i; System.out.println(c); }
根據 final 的定義,寫法1報錯!寫法2,為什么通過編譯呢?因為每次循環,都是一次新的變量c。這也是大家需要注意的地方。
引用類型的局部變量,被final修飾后,只能指向一個對象,地址不能再更改。但是不影響對象內部的成員變量值的修改,
代碼如下:
成員變量涉及到初始化的問題,初始化方式有兩種,只能二選一:
顯式初始化:
public class User { final String USERNAME = "張三"; private int age; }
構造方法初始化:
public class User { final String USERNAME ; private int age; public User(String username, int age) { this.USERNAME = username; this.age = age; } }
感謝各位的閱讀,以上就是“Java中的final關鍵字如何使用”的內容了,經過本文的學習后,相信大家對Java中的final關鍵字如何使用這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。