修飾符(Modifier):是用於限定類型以及類型成員的聲明的一種符號。
其用來定義類、方法或者變量,一般放在語句的最前端。前端
例子:編程
public class Person { default String name; public String sex; static final int age; protected static final String birth; private String position; } public static void main(String[] args) { // 方法體 }
Java語言提供了不少修飾符,主要分爲如下兩類:線程
訪問修飾符:就是類,屬性和方法的定義分級制度。code
Java中,可使用訪問控制符來保護對類、變量、方法和構造方法的訪問。Java 支持如下 4 種不一樣的訪問權限:對象
public(公共):對全部類可見。繼承
使用對象:類、接口、變量、方法接口
注意:一個程序的主類必須是公共類,且類名稱必須與文件名稱徹底一致。同步
protected(被保護):對同一包內的類和全部子類可見。it
使用對象:變量、方法。io
注意:不能修飾類(外部類)。
default(即 默認,什麼也不寫):在同一包內可見,不使用任何修飾符。
使用對象:類、接口、變量、方法。
private(私有):在同一類內可見。
使用對象:變量、方法。
注意:不能修飾類(外部類)
咱們能夠經過如下表來講明訪問權限:
修飾符 | 當前類 | 同一包內 | 同一包子類 | 不一樣包子類 | 其餘包 |
---|---|---|---|---|---|
public | √ | √ | √ | √ | √ |
protected | √ | √ | √ | √/× | × |
default | √ | √ | √ | × | × |
private | √ | × | × | × | × |
注意: 表格中出現了√/×,你們可能就很困惑了,怎麼會有√/×,因此我接下來給你們解釋。
protected修飾符,若子類與基類不在同一包中,
那麼在子類中,子類實例能夠訪問其從基類繼承而來的protected方法;
而不能訪問基類實例的protected方法。
爲了實現一些其餘的功能,Java 也提供了許多非訪問修飾符。
static(靜態):用來聲明類屬性和類方法。
使用對象:類方法和類變量。
final(最終):final修飾的類不可以被繼承,修飾的方法不能被繼承類從新定義,修飾的變量爲常量,是不可修改的。
使用對象:類、方法和變量
abstract(抽象):用來建立抽象類和抽象方法,將一個類聲明爲抽象類,沒有實現的抽象方法,須要子類提供方法實現。
使用對象:類、方法
synchronized(同步):主要用於線程的編程,該修飾符用於在運行前,對他所屬的方法加鎖,以防止多個線程的同時訪問,運行結束後解鎖。
使用對象:線程
volatile(易失):主要用於線程的編程,在多個線程中,指定該變量能夠同時被幾個線程控制和修改。
使用對象:線程
靜態變量:即 類變量
static關鍵字用來聲明獨立於對象的靜態變量,不管一個類實例化多少對象,它的靜態變量只有一份拷貝。
靜態變量也被稱爲類變量。局部變量不能被聲明爲 static 變量。
靜態方法:即 類方法
static關鍵字用來聲明獨立於對象的靜態方法。靜態方法從參數列表獲得數據,而後計算這些數據。
注意:靜態方法不能使用類的非靜態變量。
(即 類方法使用類變量,而不能使用對象變量)