天天看點

【Java學習筆記】修飾符

1.修飾頂層類(不是指在一個類中定義的類)包括abstract、public、final。局部變量隻能用final修飾。

2.一個類中,可以通路類本身或内部類的執行個體的私有成員。

3.abstract修飾符:

形成抽象類和抽象方法,前者不能建立對象(但是可以建立一個引用變量,其類型時抽象類,但是它引用非抽象的子類的一個執行個體),後者不提供具體實作。抽象類中可以沒有抽象方法,但是包含抽象方法的類必須是抽象類。若子類沒有實作父類中所有的抽象方法,那麼子類也必須被定義為抽象類。實作抽象方法直接使用覆寫。不存在抽象構造方法,更不存在抽象靜态方法。abstact和final不能同時使用。

4.final修飾符:

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

final修飾的方法不能被子類的方法覆寫。

final修飾的變量是常量,隻能指派一次。

final不能修飾構造方法。

private類型由于其不能被子類方法所覆寫,其預設的為final類型。

注意:

a.final類型的成員變量必須顯式初始化.其中執行個體變量還可以在構造方法中初始化。

b.若将引用類型的變量用final修飾,那麼該變量隻能始終引用一個對象。

5.靜态修飾符:

用static修飾的成員變量和成員方法,可以直接通過類名通路。

用static修飾的代碼塊,JVM加載類的時候就會執行。

static變量在某種程度上類似于C語言的全局變量相似.

static方法可以直接使用類名進行通路,隻能直接通路所屬類的靜态變量和靜态方法。要通路非靜态的變量和方法則使用一個對象引用來進行。但相對的,執行個體方法卻可以直接通路所屬類的靜态變量和靜态方法和執行個體變量以及執行個體方法。它必須被實作(也就是說不能被abstract,它倆永遠是一對冤家)。但是要注意的是,方法的位元組碼都在方法區,而引用都在堆上。

static塊:類的構造方法用來初始化類的執行個體,而類的靜态代碼塊則可用于初始化類,給類的靜态變量賦初值。它和靜态方法一樣,不能直接通路類的執行個體變量和執行個體方法,而必須通過執行個體的引用來通路它們。