Java基礎(chǔ)3-關(guān)于修飾符

實際開發(fā)中,為了對變量進行封裝揽思,提高方法和變量訪問安全性等袜腥,就要用到各種修飾符的功能。

Java修飾符分兩種

1钉汗、訪問修飾符

public 公用的瞧挤,對所有類可見,可用來修飾類儡湾,方法和變量特恬,構(gòu)造函數(shù)
protected 受保護的,同包或子類可見徐钠,可用來修飾方法和變量癌刽,構(gòu)造函數(shù)
defualt 默認的,不帶修飾符尝丐,僅對同包可見显拜,可用來修飾類,方法和變量爹袁,構(gòu)造函數(shù)

private 受保護的远荠,僅本類內(nèi)可見,可用來修飾類失息,方法和變量譬淳,構(gòu)造函數(shù)
這里寫圖片描述

2、非訪問修飾符

static

靜態(tài)修飾符盹兢,可以用于修飾類邻梆,方法,和變量
修飾類時绎秒,作為靜態(tài)內(nèi)部類使用浦妄。
修飾方法和變量時,程序運行時就加載见芹,不用new 一個對象剂娄,就能直接調(diào)用,常用final一起用

例子:
/*定義一個靜態(tài)內(nèi)部類,里面包含靜態(tài)方法和靜態(tài)變量*/ public static final class FinalClass3Static { public static String string = "這是FinalClass3的的靜態(tài)內(nèi)部類FinalClass3Static的final3Method()"; public static void final3Method() { System.out.println(string); } }

final

可以用于修飾類玄呛,方法阅懦,還有變量
當(dāng)用于修飾類時,該類不能被繼承把鉴,故沒有子類故黑,此final類中的方法默認是final的,反正不能被繼承庭砍,那也是沒辦法被重寫的了场晶。
當(dāng)用于修飾方法時,final方法不能被子類重寫怠缸,但可以被直接調(diào)用诗轻,也可以被重載
當(dāng)用于修飾變量時,常與static合用揭北,表示常量扳炬,只能被賦值一次,賦值后值不能再被改變搔体。

案例1:
public final abstract class AbstractClass{}
這樣寫是錯的恨樟,final不能和abstract共用,因為抽象類的誕生就是為了讓子類來繼承它 再實現(xiàn)方法的,而加了final之后就無法被繼承了疚俱,這樣定義這類沒意義了劝术。

案例2:
public final class AbstractClass{} public class Class2 extends AbstractClass{}
這樣寫是錯的,因為final類無法被繼承

案例3:

public class FinalClass{ public final void finalMethod1(){ System.out.println("這是FinalClass下的finalMethod1()方法"); } } public class FinalClass2 extends FinalClass { /*final方法只能在子類直接調(diào)用呆奕,而無法進行重寫*/ @Override public final void finalMethod1() { System.out.println("這是TestFinal2n下的finalMethod1()方法"); } /*隨不能重寫养晋,但可以重載*/ public static final void finalMethod1(String string){ System.out.println("這是FinalClass2下的finalMethod1()方法"+string); } }

這樣寫是錯的,因為finalMethod1()是final方法梁钾,繼承的子類只能直接調(diào)用該方法绳泉,但不能重寫final方法。 ps:可以重載該方法

案例4:
public static final String MY_FINAL_STRING ="myFinalString"; MY_FINAL_STRING = “ttt”;
這樣寫也是錯的姆泻,無法為final變量重新賦值

abstract

可以用來修飾類和方法零酪,abstract不能和final或static公用。案例中會解釋
用于修飾類時拇勃,抽象類可以包含抽象方法蛾娶,也可以不包含抽象方法,但如果是包含抽象方法潜秋,則一定要變成抽象類蛔琅。
當(dāng)子類繼承某抽象類時,必須實現(xiàn)其中的抽象方法峻呛。
用于修飾方法時罗售,該方法只能有方法聲明,不能包含方法體钩述,需要被子類覆蓋重寫該方法寨躁,才能使用。
不能用來修飾變量牙勘。

案例1:
public final abstract void AbstractMethod(){ System.out.println("這是一個抽象方法"); }

這是錯的职恳,抽象方法不能再用final來修飾所禀,因為抽象方法只有繼承了它的子類才能調(diào)用的(而加了final的類不能被繼承),也不能有方法體
public static abstract void AbstractMethod(){
System.out.println("這是一個抽象方法"); }
這也是錯的放钦,因為static表示靜態(tài)色徘,而abstract是動態(tài)的要運行時才能確定下來

案例2:
public abstract class AbstractClass {}
AbstractClass abstractClass = new AbstractClass();
這是錯的,抽象類無法被實例化操禀,不能new褂策,但可以用匿名內(nèi)部類的方法來實現(xiàn),如下面
AbstractClass abstractClass = new AbstractClass() { @Override public void AbstractMethod2() { } @Override void AbstractMethod3() { } };

synchronized

當(dāng)它用來修飾一個方法或者一個代碼塊的時候颓屑,能夠保證在同一時刻最多只有一個線程執(zhí)行該段代碼斤寂。 一、當(dāng)兩個并發(fā)線程訪問同一個對象object中的這個synchronized(this)同步代碼塊時揪惦,一個時間內(nèi)只能有一個線程得到執(zhí)行遍搞。另一個線程必須等待當(dāng)前線程執(zhí)行完這個代碼塊以后才能執(zhí)行該代碼塊。
二器腋、然而尾抑,當(dāng)一個線程訪問object的一個synchronized(this)同步代碼塊時,另一個線程仍然可以訪問該object中的非synchronized(this)同步代碼塊蒂培。
三再愈、尤其關(guān)鍵的是,當(dāng)一個線程訪問object的一個synchronized(this)同步代碼塊時护戳,其他線程對object中所有其它synchronized(this)同步代碼塊的訪問將被阻塞翎冲。
四、第三個例子同樣適用其它同步代碼塊媳荒。也就是說抗悍,當(dāng)一個線程訪問object的一個synchronized(this)同步代碼塊時,它就獲得了這個object的對象鎖钳枕。結(jié)果缴渊,其它線程對該object對象所有同步代碼部分的訪問都被暫時阻塞。

transient

在java中鱼炒,如果一個對象實現(xiàn)了serializable接口衔沼,那么這對象的方法和屬性就可以被序列化,但實際開發(fā)中昔瞧,我們有時方法或?qū)傩圆⒉幌胨恍蛄谢敢希藭r就要用到transient關(guān)鍵字,添加了此關(guān)鍵字的屬性自晰,在實現(xiàn)serializable接口凝化,不會被序列化 transient關(guān)鍵字只能修飾變量,而不能修飾方法和類

volatile

用來確保將變量的更新操作通知到其他線程,保證了新值能立即同步到主內(nèi)存,以及每次使用前立即從主內(nèi)存刷新. 當(dāng)把變量聲明為volatile類型后,編譯器與運行時都會注意到這個變量是共享的 存在線程安全問題酬荞。

Demo工程下載地址

http://download.csdn.net/detail/forgot2015/9732243

參考文章

http://lavasoft.blog.51cto.com/62575/18771/ http://www.cnblogs.com/GnagWang/archive/2011/02/27/1966606.html http://www.cnblogs.com/lanxuezaipiao/p/3369962.html http://www.ibm.com/developerworks/cn/java/j-jtp06197.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末搓劫,一起剝皮案震驚了整個濱河市瞧哟,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌枪向,老刑警劉巖勤揩,帶你破解...
    沈念sama閱讀 212,080評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異遣疯,居然都是意外死亡,警方通過查閱死者的電腦和手機凿傅,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,422評論 3 385
  • 文/潘曉璐 我一進店門缠犀,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人聪舒,你說我怎么就攤上這事辨液。” “怎么了箱残?”我有些...
    開封第一講書人閱讀 157,630評論 0 348
  • 文/不壞的土叔 我叫張陵滔迈,是天一觀的道長。 經(jīng)常有香客問我被辑,道長燎悍,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,554評論 1 284
  • 正文 為了忘掉前任盼理,我火速辦了婚禮谈山,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘宏怔。我一直安慰自己奏路,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,662評論 6 386
  • 文/花漫 我一把揭開白布臊诊。 她就那樣靜靜地躺著鸽粉,像睡著了一般。 火紅的嫁衣襯著肌膚如雪抓艳。 梳的紋絲不亂的頭發(fā)上触机,一...
    開封第一講書人閱讀 49,856評論 1 290
  • 那天,我揣著相機與錄音玷或,去河邊找鬼威兜。 笑死,一個胖子當(dāng)著我的面吹牛庐椒,可吹牛的內(nèi)容都是我干的椒舵。 我是一名探鬼主播,決...
    沈念sama閱讀 39,014評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼约谈,長吁一口氣:“原來是場噩夢啊……” “哼笔宿!你這毒婦竟也來了犁钟?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,752評論 0 268
  • 序言:老撾萬榮一對情侶失蹤泼橘,失蹤者是張志新(化名)和其女友劉穎涝动,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體炬灭,經(jīng)...
    沈念sama閱讀 44,212評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡醋粟,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,541評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了重归。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片米愿。...
    茶點故事閱讀 38,687評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖鼻吮,靈堂內(nèi)的尸體忽然破棺而出育苟,到底是詐尸還是另有隱情,我是刑警寧澤椎木,帶...
    沈念sama閱讀 34,347評論 4 331
  • 正文 年R本政府宣布违柏,位于F島的核電站,受9級特大地震影響香椎,放射性物質(zhì)發(fā)生泄漏漱竖。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,973評論 3 315
  • 文/蒙蒙 一畜伐、第九天 我趴在偏房一處隱蔽的房頂上張望闲孤。 院中可真熱鬧,春花似錦烤礁、人聲如沸讼积。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,777評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽勤众。三九已至,卻和暖如春鲤脏,著一層夾襖步出監(jiān)牢的瞬間们颜,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,006評論 1 266
  • 我被黑心中介騙來泰國打工猎醇, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留窥突,地道東北人。 一個月前我還...
    沈念sama閱讀 46,406評論 2 360
  • 正文 我出身青樓硫嘶,卻偏偏與公主長得像阻问,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子沦疾,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,576評論 2 349

推薦閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法称近,類相關(guān)的語法第队,內(nèi)部類的語法,繼承相關(guān)的語法刨秆,異常的語法凳谦,線程的語...
    子非魚_t_閱讀 31,598評論 18 399
  • 一:java概述:1,JDK:Java Development Kit衡未,java的開發(fā)和運行環(huán)境尸执,java的開發(fā)工...
    ZaneInTheSun閱讀 2,635評論 0 11
  • (一)Java部分 1、列舉出JAVA中6個比較常用的包【天威誠信面試題】 【參考答案】 java.lang;ja...
    獨云閱讀 7,085評論 0 62
  • 看圖不說話缓醋,步驟都如圖所示:
    景彧閱讀 324評論 0 0
  • 第一次沒有聽見鬧鐘響起如失,安靜的清晨,安靜的武漢改衩。 猛的一驚岖常,才想起昨天手表丟失的事情驯镊。 當(dāng)你習(xí)慣了身邊有一樣?xùn)|西的...
    MKeeper閱讀 97評論 0 1