簡體   English   中英

static,final,static final - 正確用法以及何時使用它們?

[英]static, final, static final - correct usage and when to use them?

我想知道何時應該為變量和(或)方法使用static,final,static final參數。 據我所知:

  • final:在c ++中類似於const參數使用。 它基本上意味着值(或方法 - 返回值)不會改變。
  • static:這意味着值(或方法)不直接分配給某個對象 - 因此您可以在其他類中使用靜態變量(或方法)而無需創建對象
  • final static:這個組合是否意味着你有變量(或方法),你可以在不創建對象(靜態)的情況下訪問它並且你無法改變它的值(就像在c ++ const中)(最終)

如果我是對的,那我就得不到一件事。 在IntelliJ IDE中,當您將方法聲明為public final static時,它指出應該刪除final,因為已經指出了static。 為什么,如何,何時???

static表示字段或方法屬於 ,而不是類的 單個實例

當應用於方法與字段(或局部變量)時, final實際上意味着不同的東西:

  • final變量和字段無法重新分配。 這與C ++的const非常相似。
  • 無法覆蓋final方法這僅適用於實例上的方法 在這個意義上使用時, final與C ++的const不相似。

因為您無法覆蓋類上的static方法,所以組合修飾符static final 通常是多余的,這就是IntelliJ建議您刪除其中一個修飾符的原因。

補充筆記:

  • final變量和字段可以引用可能更改的實例,即使引用本身不能更改。
  • 雖然你沒有問過類,但final還有第三個含義: final類不能被子類化。 static也可以應用於嵌套類(類中的類),但它具有相同的含義: static嵌套類不完全屬於封閉類的一個實例,否則它將屬於封閉類的一個實例。
  • 雖然static方法無法被覆蓋,但是有一種類似的行為稱為“陰影”或“方法隱藏”, 子類通過該行為提供與子類具有相同名稱和簽名的靜態方法 這與覆蓋的行為不同,但類似地, static final方法不能被遮蔽

相關的問題: “聲明一個最終的靜態方法是不是一個壞主意?”

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM