java-學習筆記-訪問權限修飾詞一
時間:2016-12-14作(zuo)者:華清遠(yuan)見
Public、protected和(he)private public protected和private是(shi)(shi)java訪(fang)問權(quan)限(xian)修(xiu)飾詞,在使用的(de)(de)時,置于(yu)(yu)類(lei)(lei)中(zhong)的(de)(de)每(mei)個成(cheng)員(yuan)定義之前,無論是(shi)(shi)一(yi)個域(yu)還是(shi)(shi)一(yi)個方(fang)法。如果不提(ti)供(gong)任何(he)訪(fang)問權(quan)限(xian)修(xiu)飾詞,則意(yi)味著它(ta)是(shi)(shi)“包(bao)(bao)訪(fang)問權(quan)限(xian)”。包(bao)(bao)訪(fang)問權(quan)限(xian)意(yi)味著,當前包(bao)(bao)中(zhong)的(de)(de)所有(you)(you)(you)(you)其(qi)他(ta)(ta)類(lei)(lei)對(dui)(dui)(dui)那個成(cheng)員(yuan)都(dou)有(you)(you)(you)(you)訪(fang)問權(quan)限(xian)。但是(shi)(shi)對(dui)(dui)(dui)于(yu)(yu)這個包(bao)(bao)之外的(de)(de)所有(you)(you)(you)(you)類(lei)(lei),這個成(cheng)員(yuan)是(shi)(shi)private的(de)(de)。對(dui)(dui)(dui)于(yu)(yu)處(chu)于(yu)(yu)相同(tong)目錄并且沒有(you)(you)(you)(you)給(gei)自(zi)己設定任何(he)包(bao)(bao)名稱的(de)(de)文件,java自(zi)動將它(ta)們(men)看作隸(li)屬于(yu)(yu)該目錄的(de)(de)默認(ren)包(bao)(bao)中(zhong),于(yu)(yu)是(shi)(shi)它(ta)們(men)為該目錄中(zhong)所有(you)(you)(you)(you)其(qi)他(ta)(ta)的(de)(de)文件都(dou)提(ti)供(gong)了包(bao)(bao)訪(fang)問權(quan)限(xian)。 public 一個成員是public的,無論是誰,無論在哪里(li),都(dou)可以訪問(wen)該成員。 java編程思想對類訪問權限的(de)描述: 1. 對(dui)于每個(ge)(ge)編(bian)(bian)(bian)譯(yi)單(dan)元(文件)都只能(neng)有(you)(you)一個(ge)(ge)public類。這表示(shi),每個(ge)(ge)編(bian)(bian)(bian)譯(yi)單(dan)元都有(you)(you)單(dan)一的公共接(jie)口,用public類來表現。如果某(mou)個(ge)(ge)編(bian)(bian)(bian)譯(yi)單(dan)元中有(you)(you)一個(ge)(ge)以(yi)上的public類,編(bian)(bian)(bian)譯(yi)器(qi)就會報錯。 2. 在java代(dai)碼組織中(zhong),假設文件(jian)(jian)名為MyClass.java,那(nei)么意味(wei)這在這個(ge)文件(jian)(jian)中(zhong)的public類名稱必須是MyClass。若名稱不匹(pi)配,編(bian)譯器同樣會(hui)報錯的。 3. 每個編譯單元中,也是可以完全不帶public類的。這種情況下,可以隨意對文件命名(但是會對閱讀和維護產生影響)(參考://blog.csdn.net/bareheadzzq/article/details/6562211) ·protected 繼承(cheng)而來的類(lei),是可以訪問protected成(cheng)員(yuan)的。private 只有自己類(lei),才可(ke)以訪(fang)問(wen)自己類(lei)中的private類(lei)型(xing)的域和方法。 private 關鍵字private的意思是,除了包含該成(cheng)員的類(lei)之外,其他任(ren)何(he)類(lei)都無法(fa)是訪問到這個成(cheng)員。 處(chu)于(yu)同一個(ge)包內的(de)其他類都(dou)無法(fa)訪問(wen)private成員的(de)。因此等于(yu)說(shuo)自(zi)己隔離了(le)自(zi)己。 訪問權(quan)限的(de)控制常(chang)被成(cheng)為是具體實(shi)現(xian)(xian)的(de)隱藏(zang)。把(ba)數據和方(fang)法(fa)包裝(zhuang)進類(lei)中(zhong),以及(ji)具體實(shi)現(xian)(xian)的(de)隱藏(zang),常(chang)共同稱(cheng)為封裝(zhuang)。其結(jie)果是一個(ge)同時帶有特征和行為的(de)數據類(lei)型。 類訪問權限 訪問權限修飾詞也可以作用與類(lei),若希(xi)望某個(ge)(ge)類(lei)可以為某個(ge)(ge)客戶端程序員(yuan)使(shi)用,就可以把public作用于整個(ge)(ge)類(lei)的定義。 額外的限制:每個(ge)編(bian)譯單(dan)元(yuan)(yuan)(文(wen)件)都只能有(you)一個(ge)public類(lei)。這表示(shi),每個(ge)編(bian)譯單(dan)元(yuan)(yuan)都有(you)單(dan)一的公共接口,用public類(lei)來表現。一個(ge)編(bian)譯單(dan)元(yuan)(yuan)擁有(you)一個(ge)以上的public類(lei),編(bian)譯器就會報錯。pubilic類(lei)的名稱必須(xu)和文(wen)件名相(xiang)同。 注意:類(lei)(lei)(lei)既不可以(yi)(yi)是一個private類(lei)(lei)(lei)型(xing)的(de)(de)(這樣就導(dao)致出(chu)類(lei)(lei)(lei)這個類(lei)(lei)(lei),其他類(lei)(lei)(lei)都無法(fa)訪問它),也不可以(yi)(yi)是一個protected類(lei)(lei)(lei)型(xing)。對(dui)于類(lei)(lei)(lei)的(de)(de)訪問權限(xian),只有兩種(zhong)選擇(ze):包訪問權限(xian)和public類(lei)(lei)(lei)型(xing)。如果不希望別(bie)人對(dui)該類(lei)(lei)(lei)擁有訪問權限(xian),可以(yi)(yi)把所(suo)有的(de)(de)構造其設置為private類(lei)(lei)(lei)型(xing)的(de)(de),從(cong)而阻止別(bie)人創建(jian)這個類(lei)(lei)(lei)的(de)(de)對(dui)象。除(chu)非你是這個類(lei)(lei)(lei)的(de)(de)static方法(fa),在內(nei)部就可以(yi)(yi)創建(jian)它。 控(kong)制對成員(yuan)的訪問(wen)權限有兩個原因: 1 是(shi)為(wei)了(le)是(shi)用戶(hu)(hu)不(bu)要觸碰那些(xie)他(ta)們不(bu)該觸碰的(de)部(bu)分(fen)。這(zhe)些(xie)部(bu)分(fen)對于類內部(bu)的(de)操作是(shi)必要的(de),但不(bu)屬于客戶(hu)(hu)端程序(xu)員(yuan)所需要的(de)接口(kou)。指定為(wei)private,對于客戶(hu)(hu)端程序(xu)員(yuan)來說(shuo),可(ke)以清楚的(de)了(le)解(jie)什么是(shi)他(ta)們應該注意(yi)的(de),什么是(shi)應該忽視的(de)。 2 更為重(zhong)(zhong)要的原(yuan)因是,為了讓類(lei)庫設計者可(ke)以(yi)更改(gai)類(lei)的內部工作(zuo)方式,而不必擔心這(zhe)樣做會(hui)對客戶端(duan)程序員(yuan)會(hui)產生重(zhong)(zhong)大的影(ying)響。如果接口和實現可(ke)以(yi)被明確的隔離和保護,那么就客戶端(duan)程序員(yuan)就可(ke)以(yi)不用重(zhong)(zhong)寫代碼(ma)。 發表評論
|