Qualificatif d'accès | Description |
---|---|
public | accessible de n'importe où |
Non spécifié | Accessible uniquement à partir du même package |
Qualificatif d'accès | Description |
---|---|
public | accessible de n'importe où |
protected | accessible dans le même package et à partir des sous-classes |
Non spécifié | Accessible uniquement à partir du même package |
privé | Uniquement accessible depuis la même classe |
Le fichier créé est le suivant.
Classe | Nom de fichier |
---|---|
classe principale | Modifier.java (dossier principal) |
classe publique | Pub.java (dossier de test) |
Classe non spécifiée | None.java (dossier de test) |
Modifier.java (lister la méthode principale)
package main;
import test.None; //Supprimé lors de l'exécution dans Eclipse
import test.Pub;
public class Modifier {
public static void main(String[] args) {
Pub pubclass = new Pub();
None noneclass = new None();
System.out.println(pubclass.pubpub);
System.out.println("Accéder aux champs protégés de la classe publique");
System.out.println(pubclass.pubpro);
System.out.println("Accéder à des champs non spécifiés en classe publique");
System.out.println(pubclass.pubnone);
System.out.println("Accéder au champ privé de la classe publique");
System.out.println(pubclass.pubpri);
System.out.println("Accéder aux champs publics de classe non spécifiée");
System.out.println(noneclass.nonepub);
System.out.println("Accéder aux champs protégés d'une classe non spécifiée");
System.out.println(noneclass.nonepro);
System.out.println("Accéder à des champs non spécifiés dans une classe non spécifiée");
System.out.println(noneclass.nonenone);
System.out.println("Accéder aux champs privés d'une classe non spécifiée");
System.out.println(noneclass.nonepri);
}
}
Pub.java
package test;
public class Pub {
public String pubpub = "pubpub";
protected String pubpro = "public proteced";
String pubnone = "public none";
private String pubpri = "pubpri";
}
None.java
package test;
class None {
public String nonepub = "nonepub";
protected String nonepro = "nonepro";
String none = "nonenone";
private String nonepri = "nonepri";
}
Comme je l'ai écrit dans le commentaire ci-dessus, dans Modifier.java
import test.None;
Il a été écrit, mais il a été supprimé lorsque je l'ai exécuté dans Eclipse. Le message d'erreur sur la console
Exception in thread "main" java.lang.Error: Unresolved compilation problems:
Impossible de résoudre Aucun pour taper
Impossible de résoudre Aucun pour taper
Pub sur le terrain.pubpro est invisible
Pub sur le terrain.pubnone est invisible
Pub sur le terrain.pubpri est invisible
at main.Modifier.main(Modifier.java:8)
Pub.java
//Commenté autrement qu'en public
package test;
public class Pub {
public String pubpub = "pubpub";
// protected String pubpro = "public proteced";
// String pubnone = "public none";
// private String pubpri = "pubpri";
}
None.java
//Ajout d'un modificateur public à la classe
//Commenté autrement qu'en public
package test;
public class None {
public String nonepub = "nonepub";
// protected String nonepro = "nonepro";
// String none = "nonenone";
// private String nonepri = "nonepri";
}
Modifier.java
//J'ai commenté toute la sortie
//Ajouté pour appeler uniquement le champ qualificatif public du package
package main;
import test.None; //Puisqu'il s'agit d'une classe publique, elle peut être importée sans être effacée
import test.Pub;
public class Modifier {
public static void main(String[] args) {
Pub pubclass = new Pub();
None noneclass = new None();
System.out.println(pubclass.pubpub);
System.out.println(noneclass.nonepub);
// System.out.println(pubclass.pubpub);
// System.out.println("Accéder aux champs protégés de la classe publique");
// System.out.println(pubclass.pubpro);
// System.out.println("Accéder à des champs non spécifiés en classe publique");
// System.out.println(pubclass.pubnone);
// System.out.println("Accéder au champ privé de la classe publique");
// System.out.println(pubclass.pubpri);
// System.out.println("Accéder aux champs publics de classe non spécifiée");
// System.out.println(noneclass.nonepub);
// System.out.println("Accéder aux champs protégés d'une classe non spécifiée");
// System.out.println(noneclass.nonepro);
// System.out.println("Accéder à des champs non spécifiés dans une classe non spécifiée");
// System.out.println(noneclass.nonenone);
// System.out.println("Accéder aux champs privés d'une classe non spécifiée");
// System.out.println(noneclass.nonepri);
}
}
Résultat d'exécution
pubpub
nonepub
Vous pouvez maintenant l'exécuter sans aucune erreur.
Je pense que ce sera le cas.
Une classe non désignée protège le mur de fer Même dans la classe publique, des membres autres que le public gardent le mur de fer
Est-ce que tout va bien?
Les classes non spécifiées ne peuvent pas être utilisées en dehors du package, donc elles ne peuvent être utilisées qu'à l'intérieur du package, donc je me demande si elles sont utilisées pour l'héritage, comme les classes abstraites. Le quartier est encore ambigu, mais ...
En premier lieu, lorsque j'écrivais dans Eclipse, une ligne ondulée rouge m'a signalé l'erreur à chaque fois. Cela valait la peine d'écrire juste pour se rendre compte de sa commodité.
Pour le moment J'espère que cela sera utile pour les débutants!
Recommended Posts