Modificateur d'accès Java (contrôleur d'accès)
Java contrôle les droits d'accès et d'autres fonctions des classes, des propriétés et des méthodes via des modificateurs, généralement placés à l'avant d'une déclaration. Par exemple:
classe publique classe classname {// corps de classe} private boolean myflag; statique final doubles semaines = 9,5; protégé statique final int boxwidth = 42; public s tatic void main (string [] arguments) {// corps de méthode}Il existe de nombreux modificateurs en Java, divisés en modificateurs d'accès et modificateurs non accessibles. Cette section introduit uniquement les modificateurs d'accès et les modificateurs non-access seront introduits plus tard.
Les modificateurs d'accès, également appelés caractères de contrôle d'accès, se réfèrent à des mots clés qui peuvent contrôler les droits d'utilisation des classes, des variables membres et des méthodes.
Les contrôleurs d'accès sont un concept important dans la programmation orientée objet et peuvent être utilisés pour protéger l'accès aux classes, variables, méthodes et constructeurs.
Java prend en charge quatre autorisations d'accès différentes:
public: public
Les classes, méthodes, constructeurs et interfaces déclarés comme public peuvent être accessibles par toute autre classe.
Si plusieurs classes publiques accessibles les unes par les autres sont distribuées dans des packages inutilisés, vous devez importer le package où se trouve la classe publique correspondante. En raison de l'héritage de la classe, toutes les méthodes publiques et variables de la classe peuvent être héritées par ses sous-classes.
La méthode suivante utilise le contrôle d'accès public:
public static void main (string [] arguments) {// corps de méthode} La méthode principale () d'un programme Java doit être définie en public, sinon, l'interprète Java ne pourra pas exécuter la classe.
protégé: protégé
Les variables, les méthodes et les constructeurs déclarés protégés peuvent être accessibles par toute autre classe du même package, ou par des sous-classes dans différents packages.
Le modificateur d'accès protégé ne peut pas modifier les classes et les interfaces.
Les sous-classes peuvent accéder aux méthodes et variables déclarées par des modificateurs protégés, afin qu'ils puissent protéger les classes non liées de l'utilisation de ces méthodes et variables.
La classe parent suivante utilise le modificateur d'accès protégé et la sous-classe surcharge la méthode Bark () de la classe parent.
Classe publique Dog {Protected Void Bark () {System.out.println ("Wow, Don't Come Over"); , J'ai très peur, ne me suivez pas ");}} Si la méthode Bark () est déclarée privée, les classes autres que le chien ne pourront pas accéder à la méthode. Si Bark () est déclaré public, toutes les classes peuvent accéder à la méthode. Si nous voulons que la méthode soit visible uniquement pour une sous-classe de la classe dans laquelle il est situé, déclarez la méthode protégée.
Privé: privé
Les modificateurs d'accès privé sont le niveau d'accès le plus strict, donc les méthodes, les variables et les constructeurs déclarés comme privés ne peuvent être accessibles que par la classe à laquelle ils appartiennent, et les classes et les interfaces ne peuvent pas être déclarées privées.
Les variables déclarées comme type d'accès privé ne peuvent être accessibles que par des classes externes via les méthodes de Getter / Setter public de la classe.
L'utilisation du modificateur d'accès privé est principalement utilisée pour masquer les détails de l'implémentation de la classe et protéger les données de la classe.
La classe suivante utilise un modificateur d'accès privé:
Classe publique {Nom de la chaîne privée; (Int Age) {this.age = Age;}}Dans l'exemple, les variables de nom et d'âge dans la classe de chiens sont des variables privées, de sorte que d'autres classes ne peuvent pas obtenir directement et définir la valeur de la variable. Pour permettre à d'autres classes de manipuler la variable, deux paires de méthodes publiques, getName () / setName () et getage () / setage () sont définies, qui sont utilisées pour obtenir et définir les valeurs des variables privées.
Il s'agit d'un mot-clé en Java.
La définition des méthodes pour accéder aux variables privées dans une classe est habituelle pour le nommer comme ceci: préfixe "get" ou "set" dans le nom de la variable et capitalisez la lettre initiale de la variable. Par exemple, la méthode pour obtenir le nom de variable privé est getName (), et la méthode pour définir le nom est setName (). Ces méthodes sont souvent utilisées et ont des noms spécifiques, appelés méthodes Getter et Setter.
Par défaut: aucun mot-clé n'est utilisé
Aucun modificateur, les propriétés et les méthodes déclarées ne sont visibles aux classes du même package. Toutes les variables de l'interface sont implicitement déclarées par défaut par défaut de la finale statique publique, tandis que les méthodes de l'interface sont publiques.
Comme le montre l'exemple suivant, la définition des classes, des variables et des méthodes n'utilise aucun modificateur:
Class Dog {String Name; Maître, j'ai faim ");}}Contrôle d'accès et héritage
Veuillez noter les règles suivantes pour l'héritage (les lecteurs qui ne comprennent pas le concept d'hérédité peuvent sauter ici, ou cliquez sur Java Héritage et l'aperçu polymorphe):
Les méthodes déclarées publiques dans la classe parent doivent également être publiques dans la classe infantile.
Les méthodes déclarées comme protégées dans la classe parent sont déclarées protégées ou publiques dans la classe infantile. Ne peut pas être déclaré privé.
Les méthodes déclarées par défaut des modificateurs dans la classe parent peuvent être déclarées privées dans les sous-classes.
Les méthodes déclarées privées dans la classe parent ne peuvent pas être héritées.
Comment utiliser les caractères de contrôle d'accès
Les caractères de contrôle d'accès nous permettent de contrôler facilement les autorisations du code:
Lorsque vous avez besoin de rendre la classe que vous écrivez à l'accès à toutes les autres classes, vous pouvez déclarer le contrôle d'accès de la classe en tant que public.
Lorsque vous devez rendre votre classe accessible uniquement par les classes de votre propre package, le caractère de contrôle d'accès peut être omis.
Lorsqu'il est nécessaire de contrôler les données des membres dans une classe, les caractères de contrôle d'accès aux données des membres dans cette classe peuvent être définis sur public, protégé ou omis.
Étendue des variables Java <Br /> En Java, la portée des variables est divisée en quatre niveaux: niveau de classe, niveau d'instance d'objet, niveau de méthode et niveau de bloc.
Les variables au niveau de la classe sont également appelées variables globales ou variables statiques. Les variables au niveau des classes existent déjà après la définition de la classe, l'espace mémoire Occupy, sont accessibles via les noms de classe et n'ont pas besoin d'être instanciés.
Une variable de niveau d'instance d'objet est une variable de membre.
Les variables au niveau de la méthode sont des variables définies dans les méthodes, qui sont des variables locales.
Les variables au niveau du bloc sont des variables définies dans un bloc. Les blocs se réfèrent au code entouré de bretelles, par exemple:
{int Age = 3; String name = "www.weixueyuan.net"; Erreur, les variables d'âge et de nom System.out.println (nom + "déjà" + âge + "ans"); illustrer:
En plus d'accès aux variables au niveau de la méthode, les méthodes peuvent également accéder aux variables au niveau de la classe et au niveau de l'instance.
Les variables au niveau de la classe et au niveau de l'instance sont accessibles à l'intérieur d'un bloc.
La méthode et les variables de niveau de bloc doivent être affichées initialisées sinon elles ne sont pas accessibles.
Code de démonstration:
Demo de classe publique {public static name = "weixueyuan"; Test1 () {int j = 3; sont seulement peuvent accéder à System.out.println ("name =" + name + ", i =" + i + ", j =" + j);} public static void main (string [] args) {// non créer un objet, accédez à la variable de classe System.out.println (Demo.Name); // Créer un objet et accéder à la méthode Demo t = new Demo (); t.Test1 ();}} Résultats en cours:
Micro Academy Name = Micro Academy, i = 0, J = 3