java類訪問權限與成員訪問權限解析
在寫代碼的時候有個問題:包內定義了一個接口類,另外一個包要實現它,這里采用接口隔離與依賴倒置原則,將兩個包的依賴關系倒置過來。但是,這里就遇到了一個問題,實現類采用工廠模式來實例化,所以實現類就不想暴露給包外,但是實現類還要實現public接口。所以這里有產生了一個疑問,如果類是default類型,成員函數是public類型,那么訪問限制是怎樣的呢?
實現驗證
1. 先在一個包中定義一個接口類:
package mytest
public interface ClassAccessTest
{
void getData();
CharSeqence getString();
}
2. 在實現包中定義實現類和工廠
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.結果:
在TestMain類中,使用非注釋掉的部分可以正常運行,使用注釋掉的部分會報錯,ClassAccessTestImp未定義
結論
由上推論出,java中類的訪問權限是可以小于成員的訪問權限的,依賴倒置和包的封裝性的要求下,可以實現滿足要求。
相關文章
java工廠實例BeanFactoryPostProcessor和BeanPostProcessor區(qū)別分析
這篇文章主要為大家介紹了BeanFactoryPostProcessor和BeanPostProcessor區(qū)別示例分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-07-07

