Il y a un problème lors de l'écriture de code: une classe d'interface est définie dans le package, et un autre package doit l'implémenter. Ici, les principes de l'isolement de l'interface et de l'inversion de dépendance sont adoptés pour inverser les dépendances des deux packages. Cependant, nous avons rencontré un problème ici. La classe d'implémentation adopte le modèle d'usine pour instancier, de sorte que la classe d'implémentation ne veut pas être exposée à l'écart, mais la classe d'implémentation doit également implémenter l'interface publique. Voici donc une question: si la classe est de type par défaut et que la fonction membre est de type public, alors quelles sont les restrictions d'accès?
Mettre en œuvre la vérification
1. Définissez d'abord une classe d'interface dans un package:
Package MyTest Public Interface classAccessTest {void getData (); CharseQence getString ();}2. Définir les cours et usines d'implémentation dans les packages d'implémentation
package classAccessTest import myTest.classAccessTest class classAccessStestImp implémente classAccessTest {int ma = 0; ClassAccessStestImp (int a) {ma = a; } public void getData () {System.out.printLin ("Les données sont" + ma); } public CharSequence getString () {return ("Les données sont" + ma); } package classAccessTest import myTest.classAccessTest public class factory {public static classAccessTest getAccessTest () {return new classAccessStestImp (10); }}3. Ensuite, utilisez l'interface dans le package d'origine:
Package Mytest Import Classcessest.Factory // Import ClassAccessTest.ClassAccessSTest Public Class TestMain {public static void main (String arg []) {factory.getaccesstest (). getString (); <span style = "white-space: pre"> </ span> // <span style = "font-family: arrial, helvetica, sans-séquef;" test = </span> new <span style = "font-family: Arial, Helvetica, Sans-Serif;"> classAccessStreStimp (10); </span>}} 4. Résultats:
Dans la classe TestMain, la partie non commentée peut s'exécuter normalement et la partie commentée signalera une erreur. ClassAccessStStimp non défini la conclusion est dérivée de ce qui précède que les autorisations d'accès des classes en Java peuvent être plus petites que les autorisations d'accès des membres. Selon les exigences de l'inversion et de l'encapsulation de paquets, les exigences peuvent être satisfaites.