程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Java語言的修飾符

Java語言的修飾符

編輯:關於JAVA

類、方法、成員變量和局部變量的可用修飾符

修飾符 類 成員方法 構造方法 成員變量 局部變量 abstract Y Y _ _ _ static _ Y _ Y _ public Y Y Y Y _ protected _ Y Y Y _ private _ Y Y Y _ synchronized _ Y _ _ _ native _ Y _ _ _ transient _ _ _ Y _ volatile _ _ _ Y _ final Y Y _ Y Y

1、訪問控制修飾符:

 Java語言采用訪問控制修飾符來控制類及類的方法和變量的訪問權限,從 而只向使用者暴露接口,但隱藏實現細節。

公開級別:用public修飾,對外公開

受保護級別:用protected修飾,向子類及同一個包中的類公開

默認級別:沒有訪問控制修飾符,向同一個包中的類公開

私有級別:用private修飾,只有 類本身可以訪問,不對外公開

 頂層類只有默認或公開級別,因此不能用private和protected來修飾。

2、abstract修飾符:

用來修飾類和成員方法,抽象類不能被實例化,抽象方法不提供具體的實現 。

抽象類中可以沒有抽象方法,但包含了抽象方法的類必須被定義為抽象類

如果子類沒有實現父類中所有的抽象方法,那麼子類也必須被定義為抽象類

沒有抽象構造方法,也沒有抽象靜態方法

抽象類中可以有非抽象的構造方法,創建子類的實例時可能會調用這些構造 方法

抽象類及抽象方法不能被final修飾符修飾(原因?)

3、final修飾符:

具有“不可更改的”意義,它可以修飾非抽象類飛、非抽象成員 方法和變量。

用final修飾的類不能被繼承,沒有子類

用final修飾的方法不能被子類的方法覆蓋

用final修飾的變量表示常量,只能被賦一次值

final不能用來修飾構造方法,無意義(為什麼?)

final類:

不是專門繼承而設計的類

出於安全的原因,類的實現細節不允許有任何改動

在創建對象模型時,確信這個類不會再被擴展

final方法:

出於安全的原因,父類不允許子類覆蓋某個方法,此時可以把這個方法聲明 為final

final變量特征:

可以修飾靜態變量,實例變量和局部變量,分別表示靜態常量,實例常量和 局部常量

final變量都必須顯示初始化

final變量只能賦一次值

如果將引用類型的變量用final修飾,那麼該變量只能始終只能引用一個對象 ,但可以改變內容

final定義常量,有如下作用:

提高程序的安全性,禁止非法修改取值固定且不允許改變的數據

提高程序代碼的可維護性

提高程序代碼的可讀性

4、static修飾符:

用static修飾的變量表示靜態變量,可以直接通過類名來訪問。

用static修飾的成員方法表示靜態方法,可以直接通過類名來訪問。

用static修飾的程序代碼塊表示靜態代碼塊,當Java虛擬機加載類時,就會 執行該快代碼

static變量:

靜態變量在內存中只有一個拷貝

對於實例變量每創建一個實例,就分配一次內存;而且互不影響

靜態變量能被類的所有實例共享,可作為實例之間進行交流的共享數據

static方法(why)

靜態方法中不能用this關鍵字,也不能直接訪問所屬類的實例變量和實例方 法

可以直接訪問所屬類的靜態變量和靜態方法

靜態方法中也不能用super關鍵字

一個靜態的方法不能被定義為抽象方法,必須實現

static代碼塊

類中也可以包含靜態代碼塊,它不存在於任何方法體中。

Java虛擬機加載類時會執行這些靜態代碼塊。類的構造方法用於初始化類的 實例,而類的靜態代碼塊則可用於初始化類。

靜態代碼塊與靜態方法一樣,也不能直接訪問類的實例變量和實例方法,而 必須通過實例的引用來訪問

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved