JAVA基礎(chǔ)——修飾符

修飾符的分類

  • 1求厕、訪問(wèn)修飾符
  • 2、非訪問(wèn)修飾符

一扰楼、訪問(wèn)修飾符

  • 1呀癣、默認(rèn)的,也稱為 default弦赖,在同一包內(nèi)可見项栏,不使用任何修飾符。

  • 2蹬竖、共有的沼沈,以 public 修飾符指定,對(duì)所有類可見案腺。

  • 3庆冕、私有的康吵,以 private 修飾符指定劈榨,在同一類內(nèi)可見。

  • 4晦嵌、受保護(hù)的同辣,以 protected 修飾符指定,對(duì)同一包內(nèi)的類和所有子類可見惭载。

default:默認(rèn)的

1.默認(rèn)訪問(wèn)修飾符聲明的變量和方法旱函,對(duì)同一個(gè)包內(nèi)的類是可見的。
2.接口里的變量都隱式聲明為 public static final描滔。
3.而接口里的方法默認(rèn)情況下訪問(wèn)權(quán)限為 public棒妨。

public:公共的

1.被聲明為 public 的類、方法含长、構(gòu)造方法和接口能夠被任何其他類訪問(wèn)券腔。
2.相互訪問(wèn)的 public 類分布在不同的包中伏穆,則需要導(dǎo)入相應(yīng) public 類所在的包。
3.由于類的繼承性纷纫,public類所有的公有方法和變量都能被其子類繼承枕扫。

private:私有的

1.類和接口不能聲明為private;
2.Private訪問(wèn)修飾符的使用主要用來(lái)隱藏類的實(shí)現(xiàn)細(xì)節(jié)和保護(hù)類的數(shù)據(jù)辱魁;
3.通過(guò)this. variable來(lái)訪問(wèn)烟瞧。

protected:受保護(hù)的

1.protected 訪問(wèn)修飾符不能修飾類和接口;
2.方法和成員變量能夠聲明為 protected;
3.接口的成員變量和成員方法不能聲明為 protected;
4.如果我們只想讓該方法對(duì)其所在類的子類可見,則將該方法聲明為 protected染簇。

例如:
class AudioPlayer {//父類
   protected boolean openSpeaker(Speaker sp) {
      // 實(shí)現(xiàn)細(xì)節(jié)
   }
}
class StreamingAudioPlayer extends AudioPlayer {//子類
   protected boolean openSpeaker(Speaker sp) {
      // 實(shí)現(xiàn)細(xì)節(jié)
   }
}

如果把 openSpeaker() 方法聲明為 private参滴,那么除了 AudioPlayer 之外的類將不能訪問(wèn)該方法。
如果把 openSpeaker() 聲明為 public剖笙,那么所有的類都能夠訪問(wèn)該方法卵洗。
如果我們只想讓該方法對(duì)其所在類的子類可見,則將該方法聲明為 protected弥咪。
修飾符 當(dāng)前類 同包內(nèi) 子孫類 其他包
public Y Y Y Y
protected Y Y Y N
default Y Y N N
private Y N N N

訪問(wèn)控制和繼承:
父類中聲明為 public 的方法在子類中也必須為 public过蹂。
父類中聲明為 protected 的方法在子類中要么聲明為 protected,要么聲明為 public聚至,不能聲明為 private酷勺。
父類中聲明為 private 的方法,不能夠被繼承扳躬。

整個(gè)世界都打包成一塊脆诉,同時(shí)劃分為四個(gè)層次:
聯(lián)合國(guó)(public)【其他包】、國(guó)家(protected)【繼承子孫】贷币、洲際(default)【同一包】击胜、個(gè)人(private)【當(dāng)前類】。
聯(lián)合國(guó)制定規(guī)則所有人都可以用役纹,國(guó)家制定的只有在國(guó)家內(nèi)可以用偶摔,各聯(lián)邦洲因地制宜有制定當(dāng)?shù)孛穹ǎ瑐€(gè)人制定的就給個(gè)人使用促脉。

二辰斋、非訪問(wèn)修飾符

  • 1、static 修飾符瘸味,用來(lái)創(chuàng)建類方法和類變量宫仗。
  • 2、final 修飾符旁仿,用來(lái)修飾類藕夫、方法和變量。
  • 3、abstract 修飾符毅贮,用來(lái)創(chuàng)建抽象類和抽象方法梭姓。
  • 4、synchronized 和 volatile 修飾符嫩码,主要用于線程的編程誉尖。

static修飾符

1.無(wú)論一個(gè)類實(shí)例化多少對(duì)象,它的靜態(tài)變量只有一份拷貝;
2.局部變量不能被聲明為 static 變量铸题。
3.static方法是類方法铡恕,是可以直接用類名調(diào)用的,類似于Objective-C中的+ (void)....;
4.在類方法中不能使用this丢间,原因很簡(jiǎn)單探熔,就像OC當(dāng)中的self。類方法是可以直接用類名來(lái)調(diào)用的烘挫,該過(guò)程總不存在對(duì)象诀艰,因此是沒(méi)有該類的實(shí)例化對(duì)象的,所以不存在self饮六。

final修飾符

1.修飾的類不能夠被繼承其垄。
2.修飾的方法可以被子類繼承,但是不能被子類修改卤橄;
3.修飾的變量為常量绿满,是不可修改的。

abstract抽象類

1.抽象類不能用來(lái)實(shí)例化對(duì)象窟扑,聲明抽象類的唯一目的是為了將來(lái)對(duì)該類進(jìn)行擴(kuò)充喇颁;
2.一個(gè)類不能同時(shí)被 abstract 和 final 修飾;
3.抽象類中不一定包含抽象方法嚎货,但是包含抽象方法的類一定要被聲明為抽象類橘霎。
4.抽象類提供了繼承的概念,它的出發(fā)點(diǎn)就是為了繼承殖属,否則它沒(méi)有存在的任何意義姐叁。所以說(shuō)定義的抽象類一定是用來(lái)繼承的,同時(shí)在一個(gè)以抽象類為節(jié)點(diǎn)的繼承關(guān)系等級(jí)鏈中忱辅,葉子節(jié)點(diǎn)一定是具體的實(shí)現(xiàn)類七蜘。

例如:
public abstract class Animal {  //抽象類
    public abstract void cry();  
}  
public class Cat extends Animal{  //子類繼承抽象類
    public void cry() {  
        System.out.println("貓叫:喵喵...");  
    }  
}  

5.抽象的意義:創(chuàng)建抽象類和抽象方法非常有用,他們可以使類的抽象性明確起來(lái),并告訴用戶和編譯器打算怎樣使用他們.抽象類還是有用的重構(gòu)器,因?yàn)樗鼈兪刮覀兛梢院苋菀椎貙⒐卜椒ㄑ刂^承層次結(jié)構(gòu)向上移動(dòng)谭溉。

其他修飾符

synchronized:synchronized 關(guān)鍵字聲明的方法同一時(shí)間只能被一個(gè)線程訪問(wèn)墙懂,可以應(yīng)用于四個(gè)訪問(wèn)修飾符。

transient:transient修飾的實(shí)例變量扮念,不會(huì)被持久化损搬,就像在iOS中使用NSUserdefault功能的時(shí)候,被修飾的實(shí)例變量不會(huì)被持久記錄。

volatile:修飾的成員變量在每次被線程訪問(wèn)時(shí)巧勤,都強(qiáng)制從共享內(nèi)存中重新讀取該成員變量的值嵌灰。而且,當(dāng)成員變量發(fā)生變化時(shí)颅悉,會(huì)強(qiáng)制線程將變化值回寫到共享內(nèi)存沽瞭。這樣在任何時(shí)刻,兩個(gè)不同的線程總是看到某個(gè)成員變量的同一個(gè)值剩瓶。(保證了變量作用的即時(shí)性驹溃。)

超綱內(nèi)容 “接口”

1.接口也是抽象的,但接口不是類延曙,接口是用來(lái)建立類與類之間的協(xié)議豌鹤,它所提供的只是一種形式,而沒(méi)有具體的實(shí)現(xiàn)枝缔。
2.接口是抽象類的延伸布疙,java為了保證數(shù)據(jù)安全是不能多重繼承的,也就是說(shuō)繼承只能存在一個(gè)父類愿卸,但是接口不同灵临,一個(gè)類可以同時(shí)實(shí)現(xiàn)多個(gè)接口,不管這些接口之間有沒(méi)有關(guān)系趴荸,所以接口彌補(bǔ)了抽象類不能多重繼承的缺陷俱诸,但是推薦繼承和接口共同使用,因?yàn)檫@樣既可以保證數(shù)據(jù)安全性又可以實(shí)現(xiàn)多重繼承赊舶。

超綱內(nèi)容“native修飾符”

1.java 中的 native 修飾符表示被修飾的方法由本地語(yǔ)言實(shí)現(xiàn)睁搭。
2.有時(shí)java應(yīng)用需要與java外面的環(huán)境交互。這是本地方法存在的主要原因笼平,你可以想想java需要與一些底層系統(tǒng)如操作系統(tǒng)或某些硬件交換信息時(shí)的情況园骆。
3.JVM支持著java語(yǔ)言本身和運(yùn)行時(shí)庫(kù),它是java程序賴以生存的平臺(tái)寓调,通過(guò)使用本地方法锌唾,我們得以用java實(shí)現(xiàn)了jre的與底層系統(tǒng)的交互,甚至JVM的一些部分就是用C寫的夺英,還有晌涕,如果我們要使用一些java語(yǔ)言本身沒(méi)有提供封裝的操作系統(tǒng)的特性時(shí),我們也需要使用本地方法痛悯。

ps:instanceof 運(yùn)算符用于判斷某個(gè)對(duì)象是不是某個(gè)類余黎,是則返回ture。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末载萌,一起剝皮案震驚了整個(gè)濱河市惧财,隨后出現(xiàn)的幾起案子巡扇,更是在濱河造成了極大的恐慌,老刑警劉巖垮衷,帶你破解...
    沈念sama閱讀 222,627評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件厅翔,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡搀突,警方通過(guò)查閱死者的電腦和手機(jī)刀闷,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,180評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)仰迁,“玉大人涩赢,你說(shuō)我怎么就攤上這事⌒保” “怎么了筒扒?”我有些...
    開封第一講書人閱讀 169,346評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)绊寻。 經(jīng)常有香客問(wèn)我花墩,道長(zhǎng),這世上最難降的妖魔是什么澄步? 我笑而不...
    開封第一講書人閱讀 60,097評(píng)論 1 300
  • 正文 為了忘掉前任冰蘑,我火速辦了婚禮,結(jié)果婚禮上村缸,老公的妹妹穿的比我還像新娘祠肥。我一直安慰自己,他們只是感情好梯皿,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,100評(píng)論 6 398
  • 文/花漫 我一把揭開白布仇箱。 她就那樣靜靜地躺著,像睡著了一般东羹。 火紅的嫁衣襯著肌膚如雪剂桥。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,696評(píng)論 1 312
  • 那天属提,我揣著相機(jī)與錄音权逗,去河邊找鬼。 笑死冤议,一個(gè)胖子當(dāng)著我的面吹牛斟薇,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播恕酸,決...
    沈念sama閱讀 41,165評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼堪滨,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了尸疆?” 一聲冷哼從身側(cè)響起椿猎,我...
    開封第一講書人閱讀 40,108評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎寿弱,沒(méi)想到半個(gè)月后犯眠,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,646評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡症革,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,709評(píng)論 3 342
  • 正文 我和宋清朗相戀三年筐咧,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片噪矛。...
    茶點(diǎn)故事閱讀 40,861評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡量蕊,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出艇挨,到底是詐尸還是另有隱情残炮,我是刑警寧澤,帶...
    沈念sama閱讀 36,527評(píng)論 5 351
  • 正文 年R本政府宣布缩滨,位于F島的核電站势就,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏脉漏。R本人自食惡果不足惜苞冯,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,196評(píng)論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望侧巨。 院中可真熱鬧舅锄,春花似錦、人聲如沸司忱。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,698評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)坦仍。三九已至禁添,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間桨踪,已是汗流浹背老翘。 一陣腳步聲響...
    開封第一講書人閱讀 33,804評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留锻离,地道東北人铺峭。 一個(gè)月前我還...
    沈念sama閱讀 49,287評(píng)論 3 379
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像汽纠,于是被迫代替她去往敵國(guó)和親卫键。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,860評(píng)論 2 361

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

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法虱朵,類相關(guān)的語(yǔ)法莉炉,內(nèi)部類的語(yǔ)法钓账,繼承相關(guān)的語(yǔ)法,異常的語(yǔ)法絮宁,線程的語(yǔ)...
    子非魚_t_閱讀 31,665評(píng)論 18 399
  • Win7下如何打開DOS控制臺(tái)梆暮? a:開始--所有程序--附件--命令提示符 b:開始--搜索程序和文件--cmd...
    逍遙嘆6閱讀 1,602評(píng)論 4 12
  • 一:java概述:1,JDK:Java Development Kit绍昂,java的開發(fā)和運(yùn)行環(huán)境啦粹,java的開發(fā)工...
    ZaneInTheSun閱讀 2,661評(píng)論 0 11
  • You can’t start the next chapter of your life if you keep...
    糖月陽(yáng)閱讀 172評(píng)論 0 0
  • ——春天的主旋律 小時(shí)候,最盼望的節(jié)日窘游,莫過(guò)于過(guò)年唠椭。過(guò)年,意味著有魚有肉可以吃忍饰,意味著可以穿新衣...
    春天的主旋律閱讀 557評(píng)論 1 4