Quelle est la différence entre
class x {
//code here
}
et
public class x {
//code here
}
Parfois, je vois des exemples sur Internet et ils ont public class
au lieu de class
et ce sont tous des programmes simples. J'utilise class
pour mes affectations et tout le monde le fait aussi
Dans le premier cas, la visibilité par défaut sera attribuée à votre classe, à savoir package-private
(c'est-à-dire: accessible dans la même package
).
Le second le rend public
, c'est-à-dire visible par toute autre classe.
La façon la plus simple de le dire:
si tout ce que vous avez est dans le même package (le paquetage com.myschool.myapp en haut de chaque fichier), il n'y a pas de différence, mais si quelque chose veut accéder à l'extérieur de son paquet, il doit être public.
Par exemple, "String" est dans "Java.lang", votre paquet n'est certainement pas dans Java.lang, donc si string n'était pas public, vous ne pourriez pas y accéder.
Il existe également les modificateurs de visibilité suivants pour les membres, les méthodes et les classes internes:
La première sera la classe par défaut, c’est-à-dire qu’elle ne peut être accédée par aucun autre paquet que lui-même, mais par d’autres classes du même paquet.
Le second le rend public, c’est-à-dire que vous pouvez y accéder depuis n’importe quelle classe d’un paquet, tout comme vous accédez à String et Array, qui sont des paquets différents.
Rappelez-vous, nous parlons de accessible à partir de packages pas classe.
Concernant, Et ensuite: si j’ai une classe X (veuillez mettre le nom de la classe en majuscule) qui n’est pas déclarée comme publique, puis-je y avoir des variables d’instance publiques (EG public string name;) ?? ;)
Oui, bien sûr, vous pouvez avoir des variables d'instance publiques dans une classe non publique.