java中的final使用(java final方法)

本文目錄一覽:

final關鍵字在java中有哪些用法

1、final類

final類不能被繼承,因此final類的成員方法沒有機會被覆蓋,默認都是final的。在設計類時候,如果這個類不需要有子類,類的實現細節不允許改變,並且確信這個類不會載被擴展,那麼就設計為final類。

2、final方法

如果一個類不允許其子類覆蓋某個方法,則可以把這個方法聲明為final方法。

使用final方法的原因有二:

第一、把方法鎖定,防止任何繼承類修改它的意義和實現。

第二、高效。編譯器在遇到調用final方法時候會轉入內嵌機制,大大提高執行效率。

3、final變量(常量)

用final修飾的成員變量表示常量,值一旦給定就無法改變!

final修飾的變量有三種:靜態變量、實例變量和局部變量,分別表示三種類型的常量。

另外,final變量定義的時候,可以先聲明,而不給初值,這中變量也稱為final空白,無論什麼情況,編譯器都確保空白final在使用之前必須被初始化。但是,final空白在final關鍵字final的使用上提供了更大的靈活性,為此,一個類中的final數據成員就可以實現依對象而有所不同,卻有保持其恆定不變的特徵。

4、final參數

當函數參數為final類型時,你可以讀取使用該參數,但是無法改變該參數的值。

5、static和final一塊用表示什麼

static final用來修飾成員變量和成員方法,可簡單理解為“全局常量”!

對於變量,表示一旦給值就不可修改,並且通過類名可以訪問。

對於方法,表示不可覆蓋,並且可以通過類名直接訪問。

Java中final修飾符可以分別用在什麼地方?表示什麼意義

1,修飾類

當用final修飾一個類時,表明這個類不能被繼承。也就是說,如果一個類你永遠不會讓他被繼承,就可以用final進行修飾。final類中的成員變量可以根據需要設為final,但是要注意final類中的所有成員方法都會被隱式地指定為final方法。

在使用final修飾類的時候,要注意謹慎選擇,除非這個類真的在以後不會用來繼承或者出於安全的考慮,盡量不要將類設計為final類。

2,修飾方法

被final修飾的方法將不能被子類覆蓋,主要用於1,把方法鎖定,以防任何繼承類修改它的含。2,在早期的Java實現版本中,會將final方法轉為內嵌調用,所以效率能夠提升

3,修飾變量

對於一個final變量,如果是基本數據類型的變量,則其數值一旦在初始化之後便不能更改;如果是引用類型的變量,則在對其初始化之後便不能再讓其指向另一個對象。

 當用final作用於類的成員變量時,成員變量(注意是類的成員變量,局部變量只需要保證在使用之前被初始化賦值即可)必須在定義時或者構造器中進行初始化賦值,而且final變量一旦被初始化賦值之後,就不能再被賦值了。

Java中final有什麼用?

根據程序上下文環境,Java關鍵字final有“這是無法改變的”或者“終態的”含義,它可以修飾非抽象類、非抽象類成員方法和變量。

final類不能被繼承,沒有子類,final類中的方法默認是final的。

final方法不能被子類的方法覆蓋,但可以被繼承。

final成員變量表示常量,只能被賦值一次,賦值後值不再改變。

final不能用於修飾構造方法。

注意:父類的private成員方法是不能被子類方法覆蓋的,因此private類型的方法默認是final類型的。

在Java中,final修飾符要如何使用

java語言定義了public、protected、private、abstract、static和final這6常用修飾詞外還定義了5個不太常用的修飾詞,下面是對這11個java修飾詞的介紹:

1.public

使用對象:類、接口、成員

介紹:無論它所處在的包定義在哪,該類(接口、成員)都是可訪問的

2.private

使用對象:成員

介紹:成員只可以在定義它的類中被訪問

3.static

使用對象:類、方法、字段、初始化函數

介紹:成名為static的內部類是一個頂級類,它和包含類的成員是不相關的。靜態方法是類方法,是被指向到所屬的類而不是類的實例。靜態字段是類字段,無論該字段所在的類創建了多少實例,該字段只存在一個實例被指向到所屬的類而不是類的實例。初始化函數是在裝載類時執行的,而不是在創建實例時執行的。

4.final

使用對象:類、方法、字段、變量

介紹:被定義成final的類不允許出現子類,不能被覆蓋(不應用於動態查詢),字段值不允許被修改。

5.abstract

使用對象:類、接口、方法

介紹:類中包括沒有實現的方法,不能被實例化。如果是一個abstract方法,則方法體為空,該方法的實現在子類中被定義,並且包含一個abstract方法的類必須是一個abstract類

6.protected

使用對象:成員

介紹:成員只能在定義它的包中被訪問,如果在其他包中被訪問,則實現這個方法的類必須是該成員所屬類的子類。

7.native

使用對象:成員

介紹:與操作平台相關,定義時並不定義其方法,方法的實現被一個外部的庫實現。

8.strictfp

使用對象:類、方法

介紹:strictfp修飾的類中所有的方法都隱藏了strictfp修飾詞,方法執行的所有浮點計算遵守ieee

754標準,所有取值包括中間的結果都必須表示為float或double類型,而不能利用由本地平台浮點格式或硬件提供的額外精度或表示範圍。

9.synchronized

使用對象:方法

介紹:對於一個靜態的方法,在執行之前jvm把它所在的類鎖定;對於一個非靜態類的方法,執行前把某個特定對象實例鎖定。

10.volatile

使用對象:字段

介紹:因為異步線程可以訪問字段,所以有些優化操作是一定不能作用在字段上的。volatile有時可以代替synchronized。

11.transient

使用對象:字段

介紹:字段不是對象持久狀態的一部分,不應該把字段和對象一起串起。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/303091.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-31 11:49
下一篇 2024-12-31 11:49

相關推薦

  • Java JsonPath 效率優化指南

    本篇文章將深入探討Java JsonPath的效率問題,並提供一些優化方案。 一、JsonPath 簡介 JsonPath是一個可用於從JSON數據中獲取信息的庫。它提供了一種DS…

    編程 2025-04-29
  • java client.getacsresponse 編譯報錯解決方法

    java client.getacsresponse 編譯報錯是Java編程過程中常見的錯誤,常見的原因是代碼的語法錯誤、類庫依賴問題和編譯環境的配置問題。下面將從多個方面進行分析…

    編程 2025-04-29
  • Java Bean加載過程

    Java Bean加載過程涉及到類加載器、反射機制和Java虛擬機的執行過程。在本文中,將從這三個方面詳細闡述Java Bean加載的過程。 一、類加載器 類加載器是Java虛擬機…

    編程 2025-04-29
  • Java騰訊雲音視頻對接

    本文旨在從多個方面詳細闡述Java騰訊雲音視頻對接,提供完整的代碼示例。 一、騰訊雲音視頻介紹 騰訊雲音視頻服務(Cloud Tencent Real-Time Communica…

    編程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介紹

    本文將詳細介紹Java Milvus SearchParam withoutFields的相關知識和用法。 一、什麼是Java Milvus SearchParam without…

    編程 2025-04-29
  • 解決.net 6.0運行閃退的方法

    如果你正在使用.net 6.0開發應用程序,可能會遇到程序閃退的情況。這篇文章將從多個方面為你解決這個問題。 一、代碼問題 代碼問題是導致.net 6.0程序閃退的主要原因之一。首…

    編程 2025-04-29
  • ArcGIS更改標註位置為中心的方法

    本篇文章將從多個方面詳細闡述如何在ArcGIS中更改標註位置為中心。讓我們一步步來看。 一、禁止標註智能調整 在ArcMap中設置標註智能調整可以自動將標註位置調整到最佳顯示位置。…

    編程 2025-04-29
  • Python創建分配內存的方法

    在python中,我們常常需要創建並分配內存來存儲數據。不同的類型和數據結構可能需要不同的方法來分配內存。本文將從多個方面介紹Python創建分配內存的方法,包括列表、元組、字典、…

    編程 2025-04-29
  • Python中init方法的作用及使用方法

    Python中的init方法是一個類的構造函數,在創建對象時被調用。在本篇文章中,我們將從多個方面詳細討論init方法的作用,使用方法以及注意點。 一、定義init方法 在Pyth…

    編程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java語言中的一個版本,於2014年3月18日發布。本文將從多個方面對Java 8中某一周的周一進行詳細的闡述。 一、數組處理 Java 8新特性之一是Stream…

    編程 2025-04-29

發表回復

登錄後才能評論