public/protected/private
public表示公開,private表示私有,protected表示保護,什麼都不寫表示默認default。
方法:
public protected default private
√ √ √ √ 同一類中
√ √ √ × 同一包中
√ √ × × 子類中
√ × × × 不同包中
成員變量:
考慮的安全性和健壯性的問題,成員變量一般為私有,並對外提供一些public的方法修改成員變量,在修改的方法中對輸入進行判斷和控制。
Private成員變量只能在類的內部使用。 Public的成員變量可以在類的外部使用。
類:
類的權限修飾符只有不加和public兩種。不加表示只有同一個包的類可以訪問,public類所有的其他類都可以訪問。
Static
意為靜態,用於修飾成員變量、方法、代碼塊。
靜態成員變量
靜態成員變量隨著類的加載而加載,多個對象共享該靜態成員變量。看如下代碼:
靜態方法
當修飾方法的時候,這個方法隨著類的加載而加載,直接通過類名來調用。很多工具類中的方法都是靜態的,直接通過“類名.方法名”調用。不過靜態方法中不能使用非靜態成員變量和非靜態方法。
靜態代碼塊
靜態代碼塊(java的類在產生對象的時候,在調用構造方法的時候,還會調用構造代碼塊)。
請看下列代碼(證明構造方法、構造語句、靜態構造語句運行的先後順序):
需要注意的是:
(1)靜態方法不能調用非靜態方法, 靜態的方法是在構造該類時加載的,類加載時會加載靜態的方法;此時非靜態方法還沒有加載,類初始化後才加載非靜態方法;所以靜態方法不能調用非靜態方法。通過在靜態方法的內部創建對象(或形式參數來傳遞的對象)來間接訪問是完全可以的。
(2)java中的main方法必須寫成static的,因為,在類加載時無法創建對象,靜態方法可以不通過對象調用。所以在類加載時就可以通過main方法入口來運行程序。
注意:父類中是靜態方法,子類中不能覆蓋為非靜態方法。在符合覆蓋規則的前提下,在父子類中,父類中的靜態方法可以被子類中的靜態方法覆蓋,但是沒有多態。
一個類在什麼時候被加載?時機(延遲加載,能不加載就不加載
(1)new 一個對象的時候,加載
這個很好理解,不解釋了。 (2)沒有創建對象,訪問類中靜態成員(方法和屬性)
(3)聲明一個類的引用,不加載(4)創建子類,先加載父類,再加載子類
(5)父類中的公開靜態方法,子類繼承,使用子類的類名調用此方法,加載父類
Abstract
這個修飾符表示抽象,可以用在方法和類前面。
抽象方法表示,類應該具備此功能,但不同的子類應該有不同的實現方式,所以沒有定義具體如何做。具體如何做由子類自己實現。子類在實現所有抽象方法後才能new對象。
如有類的內部有抽象方法,則類也必須是抽象的。抽像類不能直接new對象。抽像類中可以有非抽象方法。
以上就是小編為大家帶來的關於Java中修飾符的總結(fina除外)的全部內容了,希望對大家有所幫助,多多支持武林網~