(转)Java中的private、protected、public和default的区别
生活随笔
收集整理的這篇文章主要介紹了
(转)Java中的private、protected、public和default的区别
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
?
?1 訪問(wèn)修飾符
1.1 理解
默認(rèn)什么都不加,就是default(不用把default寫出來(lái))。意思就是只能由跟這個(gè)類在同一個(gè)包中的類來(lái)訪問(wèn),比private限制更少,但比protected限制更多。'
Java訪問(wèn)修飾符包括private,default,protected和public。含義分別表示私有的,默認(rèn)的,受保護(hù)的和公有的訪問(wèn)修飾符。這些訪問(wèn)修飾符既可以修飾類中的屬性,又可以修飾類中的方法,而public和default還可以修飾類。在同一個(gè)java文件里,公有類有且僅有一個(gè),并且該文件命名為類名.java。
Java訪問(wèn)修飾符就是確定類中屬性或方法的訪問(wèn)權(quán)限,換句話說(shuō),就是這些屬性和方法所起的作用范圍。
private,私有的訪問(wèn)權(quán)限,也是最嚴(yán)格的訪問(wèn)權(quán)限,僅只能在設(shè)置了該權(quán)限的類中訪問(wèn),利用這個(gè)訪問(wèn)權(quán)限,表現(xiàn)出封裝思想。
default,默認(rèn)的訪問(wèn)權(quán)限,也是可以省略的訪問(wèn)權(quán)限,它不僅能在設(shè)置了該權(quán)限的類中訪問(wèn),也可以在同一包中的類或子類中訪問(wèn)。
protected,受保護(hù)的訪問(wèn)權(quán)限,它除了具有default的訪問(wèn)權(quán)限外,還可以在不同包中所繼承的子類訪問(wèn)。
public,公有的訪問(wèn)權(quán)限,也是最寬松的訪問(wèn)權(quán)限,不僅可以是同一個(gè)類或子類,還是同一個(gè)包中的類或子類,又還是不同包中的類或子類,都可以訪問(wèn)。
要想更深入地理解這些訪問(wèn)權(quán)限,一方面需要明白各自的作用域,另一方面更是要弄清楚各自所體現(xiàn)出來(lái)的編程思想,比方說(shuō),prvite表現(xiàn)的封裝思想,public表現(xiàn)的面向接口編程的思想等。
在面向?qū)ο笤O(shè)計(jì)和編程的過(guò)程中,歸根結(jié)底就是類的設(shè)計(jì)。而要設(shè)計(jì)出不僅滿足當(dāng)前需求同時(shí)也能符合未來(lái)需求的類,就很有必要對(duì)類中屬性和行為設(shè)置合適的訪問(wèn)
權(quán)限。那些應(yīng)該為私有的,那些又應(yīng)該為公有的,還有那些又應(yīng)該為受保護(hù)的等,都應(yīng)該給予合理的規(guī)劃和布局,一來(lái)保證程序的功能要求,二來(lái)要體現(xiàn)程序的擴(kuò)展
性能,三來(lái)要呈現(xiàn)程序友好性質(zhì)。總之,程序應(yīng)該更好地服務(wù)用戶。而訪問(wèn)權(quán)限在這樣宏偉目標(biāo)里扮演著重要角色。
?
1.2 理解
下表為Java訪問(wèn)控制符的含義和使用情況
| ?類內(nèi)部 | ?本包 | ?子類 | 外部包? | |
| public? | ?√ | ?√ | ?√ | ?√ |
| protected | ?√ | ?√ | ?√ | ?× |
| default? | ?√ | ?√ | ?× | ?× |
| ?private | ?√ | ?× | ?× | ?× |
?
?
不寫時(shí)默認(rèn)為friendly?
?注意:Java的訪問(wèn)控制是停留在編譯層的,也就是它不會(huì)在.class文件中留下任何的痕跡,只在編譯的時(shí)候進(jìn)行訪問(wèn)控制的檢查。其實(shí),通過(guò)反射的手段,是可以訪問(wèn)任何包下任何類中的成員,例如,訪問(wèn)類的私有成員也是可能的。
區(qū)別:
(1)public:可以被所有其他類所訪問(wèn)。
(2)private:只能被自己訪問(wèn)和修改。
(3)protected:自身,子類及同一個(gè)包中類可以訪問(wèn)。
(4)default(默認(rèn)):同一包中的類可以訪問(wèn),聲明時(shí)沒(méi)有加修飾符,認(rèn)為是friendly。
?
與50位技術(shù)專家面對(duì)面20年技術(shù)見(jiàn)證,附贈(zèng)技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的(转)Java中的private、protected、public和default的区别的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: ActiveMQ 部署及发送接收消息
- 下一篇: linux下的加密解密学习