<b>修飾符</b>
<b>修飾的部件</b><b></b>
<b>描述</b>
abstract
class
interface
method
不能初始化,含有尚未實作的方法
所有接口都是抽象的. 聲明接口時可選是否添加abstract
不能修飾構造器,隻能修飾普通方法. 内部類就是抽象的
final
method
field
variable
不能被繼承,即沒有子類
不能被重寫,可以動态查找
不能修改其值. static final fields 定義常量
不能修改其值(variable指局部變量)
平台方法. 不修飾構造器,隻修飾普通方法
none(package)
member
隻能是同一包的下類才能通路
隻能是同一包的下類才能通路
private
隻能夠被目前類通路
protected
可被子類或同一包下的類通路
public
可以被所有類通路
可以被所有類通路
strictfp
所修飾的類裡方法都需要遵從嚴格的浮點運算
該方法中所有的float和double表達式都嚴格遵守FP-strict的限制,符合IEEE-754規範。這個比較少用
static
initializer
可是一個内部類變為外部類
可直接通過方法名調用此方法
修飾field時,表面此field不屬于類的執行個體
在此類被加載時就開始運作,而不是等到類被建立時才運作
synchronized
對于靜态方法,在方法執行前需要為類添加一個鎖;
對于非靜态方法,在執行之前需要為類執行個體添加一個鎖。
transient
field
在對象序列化時不需要持久化
volatile
可被異步線程通路,很少會用到
一個方法的定義,其通路修飾符隻能是public,、protected 、 private當中一個
不能同時使用abstract和final修飾一個class
抽象方法不能被定義為private, static, final, native, strictfp 或 synchronized
不能同時使用native和strictfp修飾一個方法
abstract 和 native 修飾的方法沒有方法體
abstract void<code> method();</code>
native void<code> method();</code>
當一個類包含abstract方法時,此類必須定義為abstract
<b>以下給出修飾符可修飾的各種類型</b><b></b>
<b>類</b>
<b>變量</b>
<b>方法</b>
<b>構造器</b>
<b>自由塊</b>
是
否
none or package or default
native
在網絡上同樣看到了一些比較好的總結,這裡列出來給大家參考一下,
<b>一、 </b><b>類的通路控制修飾符</b><b>(</b><b>非内部類</b><b>)</b>
修飾符
預設修飾符
作用
任何地方都能通路
包通路權限:包内可以通路,包外無法通路
<b></b>
<b>二、 </b><b>類的特性修飾符互斥與相容</b><b>(</b><b>非内部類</b><b>)</b>
類不可派生
類需要被繼承
類中采用嚴格精确浮點運算
——
<b>三、 </b><b>類的成員通路控制修飾符</b><b></b>
作用範圍
包外
子類
包内
類内
<b>四、 </b><b>類的成員變量特性修飾符</b><b></b>
不可變更
單一拷貝
共享記憶體
瞬時的
<b>五、 </b><b>類的成員方法特性修飾符</b><b></b>
構造器
本文轉自peiquan 51CTO部落格,原文連結:http://blog.51cto.com/peiquan/1298446