java類訪問(wèn)權(quán)限與成員訪問(wèn)權(quán)限解析
在寫(xiě)代碼的時(shí)候有個(gè)問(wèn)題:包內(nèi)定義了一個(gè)接口類,另外一個(gè)包要實(shí)現(xiàn)它,這里采用接口隔離與依賴倒置原則,將兩個(gè)包的依賴關(guān)系倒置過(guò)來(lái)。但是,這里就遇到了一個(gè)問(wèn)題,實(shí)現(xiàn)類采用工廠模式來(lái)實(shí)例化,所以實(shí)現(xiàn)類就不想暴露給包外,但是實(shí)現(xiàn)類還要實(shí)現(xiàn)public接口。所以這里有產(chǎn)生了一個(gè)疑問(wèn),如果類是default類型,成員函數(shù)是public類型,那么訪問(wèn)限制是怎樣的呢?
實(shí)現(xiàn)驗(yàn)證
1. 先在一個(gè)包中定義一個(gè)接口類:
package mytest public interface ClassAccessTest { void getData(); CharSeqence getString(); }
2. 在實(shí)現(xiàn)包中定義實(shí)現(xiàn)類和工廠
package classaccesstest import mytest.ClassAccessTest class ClassAccessTestImp implements ClassAccessTest { int mA = 0; ClassAccessTestImp(int a) { mA = a; } public void getData() { System.out.printlin(" the data is " + mA); } public CharSequence getString() { return (" the data is " + mA); } package classaccesstest import mytest.ClassAccessTest public class Factory { public static ClasAccessTest getAccessTest() { return new ClassAccessTestImp(10); } }
3. 再在原包中使用接口:
package mytest import classacesstest.Factory //import classaccesstest.ClassAccessTestImp public class TestMain { public static void main(String arg[]) { Factory.getAccessTest().getString(); <span style="white-space:pre"> </span>//<span style="font-family: Arial, Helvetica, sans-serif;">ClassAccessTest test = </span>new <span style="font-family: Arial, Helvetica, sans-serif;">ClassAccessTestImp(10);</span> } }
4.結(jié)果:
在TestMain類中,使用非注釋掉的部分可以正常運(yùn)行,使用注釋掉的部分會(huì)報(bào)錯(cuò),ClassAccessTestImp未定義
結(jié)論
由上推論出,java中類的訪問(wèn)權(quán)限是可以小于成員的訪問(wèn)權(quán)限的,依賴倒置和包的封裝性的要求下,可以實(shí)現(xiàn)滿足要求。
- Java中成員方法與成員變量訪問(wèn)權(quán)限詳解
- 舉例詳解Java中的訪問(wèn)權(quán)限修飾符
- 詳細(xì)學(xué)習(xí)Java Cookie技術(shù)(用戶登錄、瀏覽、訪問(wèn)權(quán)限)
- Java編程訪問(wèn)權(quán)限的控制代碼詳解
- 理解Java訪問(wèn)權(quán)限控制
- 詳解Java之路(五) 訪問(wèn)權(quán)限控制
- Java中四種訪問(wèn)權(quán)限資料整理
- 解決Java提示正在嘗試分配更低的訪問(wèn)權(quán)限問(wèn)題
- Java訪問(wèn)權(quán)限控制的重要性深入講解
- 淺析java修飾符訪問(wèn)權(quán)限(動(dòng)力節(jié)點(diǎn)Java學(xué)院整理)
- java四種訪問(wèn)權(quán)限實(shí)例分析
- Java訪問(wèn)權(quán)限原理與用法詳解
相關(guān)文章
一次 Java 內(nèi)存泄漏的排查解決過(guò)程詳解
這篇文章主要介紹了一次 Java 內(nèi)存泄漏的排查過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-07-07mybatis實(shí)現(xiàn)遍歷Map的key和value
這篇文章主要介紹了mybatis實(shí)現(xiàn)遍歷Map的key和value方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-01-01JSON 與對(duì)象、集合之間的轉(zhuǎn)換的示例
在開(kāi)發(fā)過(guò)程中,經(jīng)常需要和別的系統(tǒng)交換數(shù)據(jù),數(shù)據(jù)交換的格式有XML、JSON等,JSON作為一個(gè)輕量級(jí)的數(shù)據(jù)格式比xml效率要高,本篇文章主要介紹了JSON 與 對(duì)象 、集合 之間的轉(zhuǎn)換,有興趣的可以了解一下。2017-01-01一篇文章帶你了解JAVA面對(duì)對(duì)象應(yīng)用
Java是一門(mén)面向?qū)ο蟮恼Z(yǔ)言。對(duì)象是Java程序中的基本實(shí)體。除了對(duì)象之外Java程序同樣處理基本數(shù)據(jù)。下面這篇文章主要給大家總結(jié)了關(guān)于Java中面向?qū)ο蟮闹R(shí)點(diǎn),需要的朋友可以參考借鑒,下面來(lái)一起看看吧2021-08-08java中自定義Spring Security權(quán)限控制管理示例(實(shí)戰(zhàn)篇)
本篇文章主要介紹了java中自定義Spring Security權(quán)限控制管理示例(實(shí)戰(zhàn)篇) ,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2017-02-02java語(yǔ)言基礎(chǔ)之標(biāo)識(shí)符和命名規(guī)則詳解
這篇文章主要給大家介紹了關(guān)于java語(yǔ)言基礎(chǔ)之標(biāo)識(shí)符和命名規(guī)則的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03logback配置中變量和include的應(yīng)用方式
這篇文章主要介紹了logback配置中變量和include的應(yīng)用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-08-08