溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java中的final關鍵字如何使用

發(fā)布時間:2022-06-14 13:34:28 來源:億速云 閱讀:147 作者:iii 欄目:開發(fā)技術

這篇文章主要講解了“Java中的final關鍵字如何使用”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Java中的final關鍵字如何使用”吧!

一、final概述

子類可以在父類的基礎上改寫父類內容,比如,方法重寫。那么我們能不能隨意的繼承API中提供的類,改寫其內容呢?顯然這是不合適的。為了避免這種隨意改寫的情況,Java提供了final 關鍵字,用于修飾不可改變內容。
final: 不可改變。可以用于修飾類、方法和變量。

  • 類:被修飾的類,不能被繼承。

  • 方法:被修飾的方法,不能被重寫。

  • 變量:被修飾的變量,不能被重新賦值。

二、使用方式

修飾類

格式如下:

final class 類名 {
}

查詢API發(fā)現像 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,為什么通過編譯呢?因為每次循環(huán),都是一次新的變量c。這也是大家需要注意的地方。

局部變量&mdash;引用類型

引用類型的局部變量,被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關鍵字如何使用這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI