-
描述類別、物件或欄位的可訪問性的存取修飾符是必需的:如果沒有存取修飾符,JVM(這是通用魔法的來源)會自動為套件分配一個預設標識符。
從第二個修飾符開始,有非訪問修飾符,它們不是強制性的,也可能相互衝突(但首先要注意的是)。
-
Static修飾符指示類別、物件或欄位是靜態的。但這是什麼意思?基本上我們會在田間嘗試。
靜態變數稱為類別變量,對於該類別的所有實例都是唯一的。可以呼叫靜態方法,而無需建立聲明它們的物件。靜態類別用於將一個類別嵌套到另一個類別中,內部類別與外部類別之間的交互原理類似於方法(這是單獨討論的主題)。也可以用作物件內的單獨區塊。
-
Final修飾符有效地向變數表明它是常數。對於方法 - 它們在繼承過程中不能被覆蓋,但對於類,這表明它不能從中繼承(不可變)。
static 和final 修飾符適用於類別、物件和欄位。但是,有些修飾符僅適用於其中的某些修飾符(甚至僅適用於其中的一部分,因為變數和方法都是字段,但並非所有修飾符都適用於兩者)。打個比方,只有靴子和手套可以附魔速度(讓它們移動得更快),但帽子附魔速度是沒有意義的(宇宙監督委員會(編譯器)不會允許)。
-
Abstract 修飾符僅適用於方法和類別。抽象方法是沒有實現(主體)的方法。
如果一個類別被標記為抽象,則它要么包含抽象方法,要么被用來阻止創建該類別的實例。如果我們打個比方,在說明的中間你可以看到標題“為物件著色”,之後就沒有任何說明了。那些。使用此指令,您可以建立一個對象,也可以為它著色,但此特定指令沒有說明如何操作(根據此對象編寫您自己的創建紅色對象的指令,並描述如何為其著色)。
-
Synchronized 修飾符僅用於方法。它的存在表明一次只有一個線程可以執行它。也可以用作物件內的單獨程式碼區塊(指定同步物件)。
-
volatile修飾符-僅用於變數。建議用於可以被多個執行緒同時使用的變數。具有此類修飾符的變數每次更改時都會立即從處理器快取複製到主內存,從而允許並行線程接收最新值。
值得注意的是,易失性適用於只有一個執行緒可以寫入變量,而其餘執行緒只能讀取變數的情況。對於其他情況,最好將synchronized修飾符加入寫入易失性變數的方法。
-
Transient修飾符–僅適用於變數。這個修飾符標記了序列化物件時需要跳過的變數(這是一個非常聰明的過程,原則上,您可以自己閱讀它...)*
* - 我在第 17 級寫了這篇文章,直到那時,序列化作為一個過程還沒有被描述過,所以我建議你在必要時自己研究一下,而不是複製貼上。
- Final和Volatile - 當涉及變數時,我們不能同時說它是final(常數)並且多個線程有能力改變它......畢竟,它是常數,並且在任何時候線程都可以讀取它,但沒有一個線程可以改變常數(通用監督委員會不會允許)。
- Final 和 Abstract - 類別和方法不能同時是抽象的(這在大多數情況下意味著需要澄清它們的實作)和 Final,即 不可變的。事實證明,說明書說明如何用任何材料(抽象部分)製造一個良好耐用的頭盔,但為此其中不能有任何孔(最終強制部分,無法更改)。
- 抽象和靜態- 抽象方法不能同時是靜態的或同步的。靜態抽象方法沒有任何意義,因為它不僅不執行任何操作,而且還屬於整個類別 - 結果是一個無用的東西。
- 抽象與同步- 將工作與不執行任何操作的方法同步有什麼意義?
GO TO FULL VERSION