Maison Java javaDidacticiel Explication détaillée des modificateurs d'autorisation d'accès en Java avec des exemples

Explication détaillée des modificateurs d'autorisation d'accès en Java avec des exemples

Jan 24, 2017 pm 03:36 PM

Symbole d'autorisation d'accès :
(1) public :
Pour les membres : toute autre classe peut y accéder, que ce soit dans le même package ou dans un autre package.
Pour les cours : il en va de même.
(2)friendly :
Quant aux membres, si les membres d'une classe n'ont aucune modification d'autorisation, alors ils ont les autorisations d'accès au package par défaut, qui sont représentées par friendly, note

convivial Ce n'est pas un mot-clé en Java, c'est juste la façon dont j'aime l'exprimer. Les autres classes du même package peuvent y accéder, mais

en dehors du package ne le peuvent pas. Pour les classes du même dossier qui n'utilisent pas de packages, Java verra automatiquement d'abord ces classes comme le package par défaut appartenant au répertoire

, et les membres amicaux de la classe peuvent s'appeler les uns les autres. Par exemple, les deux classes suivantes se trouvent dans deux fichiers

dans le même dossier. Bien qu'aucun package ne soit introduit, elles appartiennent au même package par défaut.

class Sundae{
//以下两个方法缺省为friendly
Sundae(){}
Void f() {System.out.println(“Sundae.f()”);
}
public class IceCream{
public static void main(String[] args){
Sundae x = new Sundae();
x.f();
}
}
Copier après la connexion

Pour les cours : les cours du même package peuvent être utilisés. Bref, les cours ne peuvent être déclarés que publics ou conviviaux.
(3)privé :
Pour les membres : il n'est accessible que dans la classe à laquelle appartient le membre.

class Sundae{
   private Sundae(){}//只能在Sundae class中被调用
   Sundae(int i) {}
   static Sundae makASundae() {
   return new Sundae();
   }
   }
   public class IceCream{
   public static void main(String[] args){
   // Sundae class中构造函数Sundae()是private,
   // 所以不能用它进行初始化
   //Sundae x = new Sundae();
   Sundae y = new Sundae(1);//Sundae(int)是friendly,可以在此调用
   Sundae z = Sundae.makASundae();
   }
   }
Copier après la connexion

Pour les cours : Les cours ne peuvent pas être déclarés privés.

(4)protected :
Pour les membres : les classes du même package peuvent accéder (les droits d'accès au package) accordent les droits d'accès des membres de la classe de base à la classe dérivée via protected, pas toutes les classes (accès aux classes dérivées).

(5)default (autorisation par défaut)
Les classes, les données membres, les constructeurs et les membres de méthode peuvent tous utiliser les autorisations par défaut, c'est-à-dire n'écrire aucun mot-clé. L'autorisation par défaut est l'autorisation dans le même package. Les éléments avec autorisation dans le même package ne peuvent être appelés que dans la classe dans laquelle ils sont définis et dans les classes du même package.

Exemple : package c05.local;

import pack1.Cookie;
//注意:在这里ChocolateChip继承了类Cookie,按道理bite()方法也在
//ChocolateChip中,可以用x.bite直接调用,但是不可以的,因为类ChocolateChip
//和Cookie类不在一个包中,各自具有包访问权限,为了能够使用x.bite()必须要把
//Cookie方法的访问权限换成public或者protected,但是一旦换成public所有的人就
//可以访问了,这样达不到隐私的要求,所以设置成protected最好,既可以顺利访问,也可以
//避免外面的类调用,保护好隐私的作用
public class ChocolateChip extends Cookie {
  
  public ChocolateChip() {
   System.out.println("ChocolateChip constructor");
  }
  public static void main(String[] args) {
   ChocolateChip x = new ChocolateChip();
   x.bite(); // Can't access bite
   
  }
} ///:~
Copier après la connexion
package pack1;
 
public class Cookie {
public Cookie()
{
System.out.println("Cookie constructor");
}
 
protected void bite(){System.out.println("bite");}
 
}
Copier après la connexion

Pour une classe : une classe ne peut pas être déclarée protégée

Pour une classe Modification des autorisations, il y a une meilleure explication ci-dessous :

Autorisations d'accès aux classes de classe :
public : accessible à toutes les classes.
Par défaut : La valeur par défaut peut être appelée conviviale. Cependant, il n'y a pas de modificateur convivial dans le langage Java. Ce nom doit provenir de c. Les autorisations d'accès par défaut sont des autorisations d'accès au niveau du package.
Autrement dit, si vous écrivez une classe sans écrire le modificateur d'autorisation d'accès, alors c'est l'autorisation d'accès par défaut, et toutes les classes du même package peuvent y accéder, même si la classe peut être instanciée
(Bien sûr , si cette classe n'a pas la possibilité d'instancier, par exemple, la classe ne fournit pas de constructeur public).

Remarque :
1. Chaque unité de compilation (fichier de classe) ne peut avoir qu'une seule classe publique
2. Le nom de la classe publique (y compris les majuscules et les minuscules) doit avoir le même nom que son fichier de classe.
3. La classe publique n'a pas besoin d'exister dans un fichier de classe (*.java).
Scénarios où ce formulaire existe : Si nous écrivons une classe dans un package, c'est simplement pour travailler avec d'autres classes dans le même package, et
Nous ne voulons pas écrire de documentation aux clients (pas nécessairement C'est un client réel, c'est peut-être une classe qui appelle cette classe), ce qui est angoissant à voir, et il est possible qu'après un certain temps
cela change complètement l'approche d'origine et abandonne complètement l'ancienne version et remplacez-la par une toute nouvelle version.
4. Le cours ne peut pas être privé ou protégé.
5. Si vous ne souhaitez pas qu'aucun objet d'une certaine classe soit généré, vous pouvez définir tous les constructeurs de la classe sur privés. Mais même de cette manière, les objets de cette classe peuvent être générés, c'est-à-dire que les membres statiques (propriétés et méthodes) de la classe peuvent le faire.

Exemple complet :
First.java :

package Number;
import Test.*;
  
public class Frist extends Test
{
protected String s1 = "你好";
public static void main( String[] args)
{
String s2 = "java";
//System.out.println(s1);
System.out.println(s2);
  
Frist t = new Frist();
System.out.println(t.s);
t.show();
return;
}
  
}
  
Test.java:
package Test;
  
  
public class Test 
{
protected String s = "hello test"; //可以被同包中的类访问以及子类访问,该子类可以是与包Test不同
public void show()
{
Test1 t1 = new Test1();
return;
}
  
  
}
  
class Test1
{
Test1()
{
Test t = new Test();
System.out.println(t.s);
}
}
Copier après la connexion

Sortie :

java
hello test
hello test
Copier après la connexion

Plus s'il vous plaît faites attention au site Web chinois PHP pour des articles connexes expliquant les modificateurs d'autorisation d'accès en Java avec des exemples !


Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Commandes de chat et comment les utiliser
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment fonctionne le mécanisme de chargement de classe de Java, y compris différents chargeurs de classe et leurs modèles de délégation? Comment fonctionne le mécanisme de chargement de classe de Java, y compris différents chargeurs de classe et leurs modèles de délégation? Mar 17, 2025 pm 05:35 PM

Le chargement de classe de Java implique le chargement, la liaison et l'initialisation des classes à l'aide d'un système hiérarchique avec Bootstrap, Extension et Application Classloaders. Le modèle de délégation parent garantit que les classes de base sont chargées en premier, affectant la classe de classe personnalisée LOA

Comment implémenter la mise en cache à plusieurs niveaux dans les applications Java à l'aide de bibliothèques comme la caféine ou le cache de goyave? Comment implémenter la mise en cache à plusieurs niveaux dans les applications Java à l'aide de bibliothèques comme la caféine ou le cache de goyave? Mar 17, 2025 pm 05:44 PM

L'article examine la mise en œuvre de la mise en cache à plusieurs niveaux en Java à l'aide de la caféine et du cache de goyave pour améliorer les performances de l'application. Il couvre les avantages de configuration, d'intégration et de performance, ainsi que la gestion de la politique de configuration et d'expulsion le meilleur PRA

Comment puis-je utiliser JPA (Java Persistance API) pour la cartographie relationnelle des objets avec des fonctionnalités avancées comme la mise en cache et le chargement paresseux? Comment puis-je utiliser JPA (Java Persistance API) pour la cartographie relationnelle des objets avec des fonctionnalités avancées comme la mise en cache et le chargement paresseux? Mar 17, 2025 pm 05:43 PM

L'article discute de l'utilisation de JPA pour la cartographie relationnelle des objets avec des fonctionnalités avancées comme la mise en cache et le chargement paresseux. Il couvre la configuration, la cartographie des entités et les meilleures pratiques pour optimiser les performances tout en mettant en évidence les pièges potentiels. [159 caractères]

Comment utiliser Maven ou Gradle pour la gestion avancée de projet Java, la création d'automatisation et la résolution de dépendance? Comment utiliser Maven ou Gradle pour la gestion avancée de projet Java, la création d'automatisation et la résolution de dépendance? Mar 17, 2025 pm 05:46 PM

L'article discute de l'utilisation de Maven et Gradle pour la gestion de projet Java, la construction de l'automatisation et la résolution de dépendance, en comparant leurs approches et leurs stratégies d'optimisation.

Mar 17, 2025 pm 05:45 PM

L'article discute de la création et de l'utilisation de bibliothèques Java personnalisées (fichiers JAR) avec un versioning approprié et une gestion des dépendances, à l'aide d'outils comme Maven et Gradle.

See all articles