Zugriffsqualifizierer | Beschreibung |
---|
öffentlich von überall zugänglich Nicht spezifiziert | Nur innerhalb desselben Pakets zugänglich
Zugriffsqualifizierer | Beschreibung |
---|
öffentlich von überall zugänglich geschützt | innerhalb desselben Pakets und vor Unterklassen zugänglich Nicht spezifiziert | Nur innerhalb desselben Pakets zugänglich privat | Nur innerhalb derselben Klasse zugänglich
Die erstellte Datei lautet wie folgt.
Klasse | Dateiname |
---|---|
Hauptklasse | Modifier.java (Hauptordner) |
öffentliche Klasse | Pub.java (Testordner) |
Nicht spezifizierte Klasse | None.java (Testordner) |
Modifier.Java (Liste der Hauptmethode)
package main;
import test.None; //Zur Laufzeit in Eclipse entfernt
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("Greifen Sie auf geschützte Felder der öffentlichen Klasse zu");
System.out.println(pubclass.pubpro);
System.out.println("Greifen Sie auf nicht angegebene Felder in der öffentlichen Klasse zu");
System.out.println(pubclass.pubnone);
System.out.println("Greifen Sie auf das private Feld der öffentlichen Klasse zu");
System.out.println(pubclass.pubpri);
System.out.println("Greifen Sie auf öffentliche Felder einer nicht angegebenen Klasse zu");
System.out.println(noneclass.nonepub);
System.out.println("Greifen Sie auf geschützte Felder einer nicht angegebenen Klasse zu");
System.out.println(noneclass.nonepro);
System.out.println("Greifen Sie auf nicht angegebene Felder in einer nicht angegebenen Klasse zu");
System.out.println(noneclass.nonenone);
System.out.println("Greifen Sie auf private Felder einer nicht angegebenen Klasse zu");
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";
}
Wie ich im obigen Kommentar in Modifier.java geschrieben habe
import test.None;
Es wurde geschrieben, aber es wurde gelöscht, als ich es in Eclipse ausführte. Die Fehlermeldung auf der Konsole
Exception in thread "main" java.lang.Error: Unresolved compilation problems:
Keine kann nicht zum Eingeben aufgelöst werden
Keine kann nicht zum Eingeben aufgelöst werden
Field Pub.pubpro ist unsichtbar
Field Pub.Pubnone ist unsichtbar
Field Pub.pubpri ist unsichtbar
at main.Modifier.main(Modifier.java:8)
Pub.java
//Andere als öffentlich auskommentiert
package test;
public class Pub {
public String pubpub = "pubpub";
// protected String pubpro = "public proteced";
// String pubnone = "public none";
// private String pubpri = "pubpri";
}
None.java
//Öffentlicher Modifikator zur Klasse hinzugefügt
//Andere als öffentlich auskommentiert
package test;
public class None {
public String nonepub = "nonepub";
// protected String nonepro = "nonepro";
// String none = "nonenone";
// private String nonepri = "nonepri";
}
Modifier.java
//Ich habe die gesamte Ausgabe auskommentiert
//Wurde hinzugefügt, um nur das öffentliche Qualifikationsfeld des Pakets aufzurufen
package main;
import test.None; //Da es sich um eine öffentliche Klasse handelt, kann sie importiert werden, ohne gelöscht zu werden
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("Greifen Sie auf geschützte Felder der öffentlichen Klasse zu");
// System.out.println(pubclass.pubpro);
// System.out.println("Greifen Sie auf nicht angegebene Felder in der öffentlichen Klasse zu");
// System.out.println(pubclass.pubnone);
// System.out.println("Greifen Sie auf das private Feld der öffentlichen Klasse zu");
// System.out.println(pubclass.pubpri);
// System.out.println("Greifen Sie auf öffentliche Felder einer nicht angegebenen Klasse zu");
// System.out.println(noneclass.nonepub);
// System.out.println("Greifen Sie auf geschützte Felder einer nicht angegebenen Klasse zu");
// System.out.println(noneclass.nonepro);
// System.out.println("Greifen Sie auf nicht angegebene Felder in einer nicht angegebenen Klasse zu");
// System.out.println(noneclass.nonenone);
// System.out.println("Greifen Sie auf private Felder einer nicht angegebenen Klasse zu");
// System.out.println(noneclass.nonepri);
}
}
Ausführungsergebnis
pubpub
nonepub
Sie können es jetzt fehlerfrei ausführen.
Ich denke, das wird der Fall sein.
Eine nicht bezeichnete Klasse schützt die Eisenwand Selbst in der öffentlichen Klasse bewachen andere Mitglieder als die Öffentlichkeit die Eisenmauer
Ist das in Ordnung?
Nicht spezifizierte Klassen können nicht außerhalb des Pakets verwendet werden, daher können sie nur innerhalb des Pakets verwendet werden. Ich frage mich daher, ob sie für die Vererbung verwendet werden, z. B. abstrakte Klassen. Das Gebiet ist immer noch nicht eindeutig, aber ...
Als ich in Eclipse schrieb, wurde ich jedes Mal durch eine rote Wellenlinie über den Fehler informiert. Es hat sich gelohnt zu schreiben, nur um seine Bequemlichkeit zu erkennen.
Vorerst Ich hoffe es wird für Anfänger hilfreich sein!
Recommended Posts