天天看點

java修飾符概述

<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