Vous ne pouvez pas rendre une classe privée pour une autre classe seulement en la plaçant dans un fichier différent.
N'utiliser aucun modificateur d'accès à la classe
Ce que vous pouvez faire, c'est placer les classes dans des fichiers séparés sans modificateur d'accès (omettre "public"), ce qui les rendra "package-private", c'est-à-dire visibles uniquement dans leur propre paquetage. Voir aussi le tutoriel officiel sur le contrôle d'accès .
UtilClasses.java :
package OurPackage;
class UtilClass1
{
}
class UtilClass2
{
}
MainClass.java :
package OurPackage;
public class MainClass
{
UtilClass1 iAmAUtilClass;
}
Utiliser des interfaces ou l'héritage
Vous pouvez également obtenir quelque chose de similaire avec les interfaces ou l'héritage, en omettant le modificateur d'accès de la classe imbriquée. Il s'agirait également d'un package-private, mais cela pourrait être préférable à ce qui précède dans certaines circonstances, car cela évite d'avoir toutes les classes imbriquées au niveau supérieur.
BaseInterface.java :
package OurPackage;
interface BaseInterface
{
class UtilClass1
{
}
}
MainClass.java :
package OurPackage;
public class MainClass implements BaseInterface
{
UtilClass1 iAmAUtilClass;
}
Vous pouvez également utiliser une classe de base au lieu d'une interface et l'étendre avec à peu près le même effet.
Vous n'avez pas besoin de mettre en œuvre BaseInterface
d'accéder à ses classes imbriquées, mais, si vous ne le faites pas, vous devrez utiliser BaseClass.UtilClass1
au lieu de simplement UtilClass1
.