コードを作成するときに問題があります。インターフェイスクラスがパッケージで定義されており、別のパッケージが実装する必要があります。ここでは、インターフェイスの分離と依存関係の反転の原則が採用され、2つのパッケージの依存関係が反転します。ただし、ここで問題に遭遇しました。実装クラスは工場モデルを採用してインスタンス化するため、実装クラスはパケット外にさらされることを望んでいませんが、実装クラスはパブリックインターフェイスを実装する必要があります。質問があります。クラスがデフォルトタイプで、メンバー関数がパブリックタイプの場合、アクセス制限は何ですか?
検証を実装します
1.最初にパッケージ内のインターフェイスクラスを定義します。
パッケージmytest public interface classAccessTest {void getData(); Charseqcence getString();}2。実装クラスと工場を実装パッケージで定義します
パッケージclassAccesStestインポートmytest.classaccesstest class classaccesstestimpを実装しますclassAccesStest {int ma = 0; classAccesStestimp(int a){ma = a; } public void getData(){system.out.printlin( "データは" + ma); } public charcease getString(){return( "データは" + ma); } package classAccesStestインポートmyTest.classaccesstest public class Factory {public static classAccestest getAccesStest(){return new ClassAccesStestimp(10); }}3。次に、元のパッケージでインターフェイスを使用します。
パッケージMyTest Import ClassCessTest.Factory // Import ClassAccessTest.ClassAcsTestimp Public Class TestMain {public static void main(string arg []){factory.getaccestest()。 sans-serif; "> classAccessTest test = </span> new <span style =" font-family:arial、helvetica、sans-serif; "> classaccestestimp(10); </span>}}}} 4。結果:
Testmainクラスでは、非コメント化された部分は正常に実行でき、コメントされた部分はエラーを報告します。 ClassAccessTestImpの未定義の結論は、Javaのクラスのアクセス許可がメンバーのアクセス許可よりも小さくなる可能性があるという上記から派生しています。反転とパッケージのカプセル化の要件の下で、要件を満たすことができます。