1. 程式人生 > >【關鍵字private,static,final】

【關鍵字private,static,final】

【關鍵字】
【private】
是一個許可權的修飾符
可以修飾成員變數和方法
被private修飾的成員只能在本類中才能訪問。

【static 】 靜態
隨著類的載入而載入
優先於物件存在
被類的所有物件共享
[static關鍵字注意事項]
在靜態方法中是沒有thsi關鍵字(靜態是隨著類載入而載入,this是隨著物件的建立而存在)(靜態比物件先存在)
靜態方法只能訪問靜態的成員變數和靜態的成員方法
靜態方法:
成員變數:只能訪問靜態變數
成員方法:只能訪問靜態方法
非靜態方法:
成員變數:可以是靜態的,也可以是非靜態的
成員方法:可以是靜態方法,也可以是非靜態方法。
在內中被static修飾的全域性變數,建立該類的物件時,只要其中一個物件修改了static修飾的變數,其他所有是該型別的物件對應的值都被修改。
【靜態變數和成員變數的區別】
A:所屬不同 
靜態變數屬於類,所以也稱為類變數
成員變數屬於物件,所以也稱為例項變數(物件變數)
B:記憶體中位置不同
靜態變數儲存方法區在靜態區
成員變數儲存於堆記憶體
C:記憶體出現時間不同
靜態變數隨著類的載入而載入,隨著類的消失而消失
成員變數隨著物件的建立而存在,隨著物件的消失而消失
D:呼叫不同
靜態變數可以通過類名呼叫,也可以通過物件呼叫
成員變數只能通過物件名呼叫
【final】關鍵字(最終)的意思
可以修飾,成員變數,成員方法。
修飾類,類不能被繼承
修飾變數,變數就變成了常量,只能被賦值一次

修飾方法,方法不能被重寫

---------------------------【static】【public】【private】【final】的獨道理解-------------------------------------------------
方法中不能定義【靜態變數】,靜態方法中也不能定義靜態變數。
靜態方法一般屬於類。
而一個方法中的變數一般屬於這個方法。
使用public修飾後的變數,只能屬於這個類中的非靜態方法。
即屬於通用的,公用方法也是通用的,說以必然有,而私有方法許可權等級比公用方法還要低,固然能訪問公用變數


一般程式載入時,引用的所有類都會自動載入。
所有,這些所有類中的靜態方法都能使用類名直接呼叫。而不需要例項化。
【static 】靜態,每個類都可以有自己的靜態方法。程式在設計時,可以引用不同的類,但不例項化該類。
【這個關鍵字的出現為了提取專案中程式碼的重複利用。】
【public】公共的。這裡的公共的只是對類自己的所有方法公共。即,一個公共方法聲明後,在該類中其他非靜態方法都能直接呼叫該公共方法。
為什麼靜態類不能呼叫?
因為公共方法程式載入,只是在例項化該類後就載入。而靜態方法在程式引用該類的時候就載入了。
如果靜態方法能直接呼叫類中的公用方法,那麼這樣公共方法也就要和該靜態方法一起載入。這個就沒有意義了,幹嘛還要公共方法了。
所有,公共方法只是在類例項化時才載入。即,建立時載入。
【這個關鍵字出現可以說是為了類中程式碼的重複利用性而存在。】
【private】私有的。一般一個類中如果那個方法是私有的。即使外部程式引用了該類,並且例項化了該類。依然無法訪問該類的私有方法。
【這個關鍵字的出現就是為了程式碼的保密性而儲存在。】

【final】最後的。確定的
這個關鍵字,所修飾的變數或方法,一旦被修飾就無法重新賦值和重寫方法。
【這個關鍵字的出現就是為了防止專案中某些不能修改的值意外被修改】
【instanceof】判斷指定物件是否屬於某種類別。
instanceof 使用前提:判斷的物件與類別必須存在繼承或者實現的關係。
使用格式:  物件  instanceof   類別
有多型才能使用到instanceof 關鍵字 
主要用於資料型別強轉之前的判斷。

如果說,【abstract定義抽象類和expends繼承】完成了專案中類的重複利用性。即抽取出來的公用方法組成了類,完成了類中程式碼的重複利用。
【interface介面】完成了專案架構中某些功能必須實現。
那麼:interface就有點類似於final關鍵字。只不過interface只是定義框架,即必須重寫。而final對哪些全域性變數來說也相當於定義了變數那個維度的值,即不可修改。
abstract和expends定義了類中程式碼的高度複用性,也有點類似於public對變數的修飾。完成了變數在方法中的複用性。
對於private,final對方法的修飾,巧妙的完成了方法的安全和隱私。