淺析final關鍵字

来源:https://www.cnblogs.com/STDBK/archive/2018/01/31/8395475.html
-Advertisement-
Play Games

淺析final關鍵字 final單詞字面意思是“最終的,不可更改的”。所以在java中final關鍵字表示終態,即最終的狀態,“這個東西不能被改變”。 final關鍵字可以用來修飾類、方法、數據(包括成員變數、局部變數與方法參數)。 (1)final類 final關鍵字修飾的類是不能被繼承的。在這裡 ...


淺析final關鍵字

final單詞字面意思是“最終的,不可更改的”。所以在java中final關鍵字表示終態,即最終的狀態,“這個東西不能被改變”。

final關鍵字可以用來修飾類、方法、數據(包括成員變數、局部變數與方法參數)。

(1)final類

  final關鍵字修飾的類是不能被繼承的。在這裡插入一些個人想法,當一個類被修飾為final時,代表它無法被繼承,即不能被擴展,所以從設計的角度來考慮,自己寫的類一般不要修飾為final;而對於輔助性的類為了不讓外部破壞內部數據,可以修飾為final,這些只是個人想法,如果有錯,望指正!

(2)final方法

  final關鍵字修飾的方法不能被重寫。可能會使用final方法的兩個原因:一是給方法”上鎖”,防止繼承類修改它;二是程式執行效率考慮,編譯器在遇到調用final方法時候會轉入內嵌機制,大大提高執行效率。

(3)final成員變數

  當final關鍵字修飾成員變數時,表示該成員變數只能進行一次賦值操作,並且在生存期內不可以改變它的值。final成員變數必須在聲明時進行初始化或者在構造器中進行初始化,否則編譯器會報錯。

(4)final局部變數

  final修飾局部變數時只能初始化(賦值)一次,並且在生存期內不可以改變它的值。與成員變數不同,final局部變數在聲明時可以不初始化,只需要保證在使用之前初始化賦值即可。

(5)final參數

  當final關鍵字修飾參數時比較複雜,final修飾方法參數時,是在調用方法傳遞參數時候初始化的。參數被聲明為final,若是基本參數,那它就是一個常量,在調用方法傳遞參數後不能被修改;若是一個引用變數,那麼它在調用方法傳遞參數後就不能被修改指向另一個對象,但可以修改該引用所指對象的內容。

註意:

(1)如果一個類被修飾為final,結果只是禁止繼承,沒有更多的限制。所以其數據成員可以是final的,也可以不是,取決於我們的具體選擇。

(2)final類中的所有方法被預設為final方法,如果一個類不能被繼承,則其內部的方法不會被重寫,所以編譯器預設final類中的方法是final方法(final類中的方法你添加final修飾符不會增加任何效果。

想一想:

在創建一個類時,可以同時用final關鍵字與abstract關鍵字修飾嗎?

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一個插排引發的設計思想 (一) 觀察者模式 一個插排引發的設計思想 (二) 抽象類與介面 一個插排引發的設計思想 (三) 委托與事件 ...待續.... 前兩篇文章循序漸進的介紹了觀察者模式、抽象類和介面, 並分析了抽象類和介面的不同. 結尾處有這樣的問題: 無論是抽象類還是介面, 都是將設備本身放 ...
  • 一、寫在前面 應用分層這件事情看起來很簡單,但每個程式員都有自己的一套,哪怕是初學者。如何讓一家公司的幾百個應用採用統一的分層結構,並得到大部分程式員的認同呢?這可不是件簡單的事情,接下來以我們真實案例與大家一起探討,先問大家兩個技術問題: 服務的調用代碼你覺得放到哪一層好呢?A表現層;B業務邏輯層 ...
  • 使用消息服務框架,實現一個3階段提交協議的分散式事務,支持多種資料庫,甚至不支持分散式事務的嵌入式資料庫也可以實現分散式事務的功能,方便在微服務架構下實現分散式事務。 ...
  • 本文觀點僅為技術猜解,不代表官方線上真實方案。 風靡上海的掃碼乘地鐵,從2018年1月20日全面支持,至今近10天了。起初不以為然,過了大概1個禮拜左右,也下載了Metro大都會APP,開始體驗掃碼乘地鐵的秒速進站(0.5秒進出站),使用的過程中,好奇心使然,讓我看是對這套技術方案越來月感興趣,然後 ...
  • 【原創】XXX售貨機智能終端管理平臺技術方案 (一) By Jango (註:僅代表個人設計觀點。本文屬原創方案,如有抄襲等行為必追究法律責任) 對系統設計的興趣愛好,持續了好幾年,寫過好幾個方案,不過都已經壓箱底了。針對於當下新零售行業的興起,各家方案都有它自己的故事,因此,技術方案也各不相同。 ...
  • 服務發現是基於微服務架構的關鍵原則之一。嘗試配置每個客戶端或某種形式的約定可能非常困難,可以非常脆弱。Consul通過HTTP API和DNS提供服務發現服務。Spring Cloud Consul利用HTTP API進行服務註冊和發現。這不會阻止非Spring雲應用程式利用DNS界面。Consul ...
  • 一個插排引發的設計思想 (一) 觀察者模式 一個插排引發的設計思想 (二) 抽象類與介面 一個插排引發的設計思想 (三) 委托與事件 ...待續.... 不知道聊到設計模式, 經常給人兩種感覺: 1. 原來這個就是A設計模式呀, 我之前也經常這麼乾, 就是到現在才知道A設計模式指的就是這個. 2. ...
  • C3P0連接池: 配置文件:c3p0-config.xml 測試: 數據準備: CREATE DATABASE mybase; USE mybase; CREATE TABLE users( uid INT PRIMARY KEY AUTO_INCREMENT, username VARCHAR(6 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...