Heute erfahren wir über die Kontrolle der Zugriffsrechte in Java. Bevor Sie über die Zugriffskontrolle diskutieren, diskutieren wir, warum die Zugriffskontrolle erforderlich ist. Betrachten Sie zwei Szenarien:
Szenario 1: Ingenieur A hat eine Klasse -Klasse geschrieben, aber Ingenieur A möchte nicht, dass Classa von anderen in der Anwendung verwendeten Klassen zugegriffen wird. Wie sollen wir also damit umgehen?
Szenario 2: Wenn Ingenieur A eine Klasse -Klasse schreibt, die zwei Methoden Fun1 und Fun2 hat, möchte der Ingenieur nur, dass Fun1 für die Außenwelt sichtbar ist. Das heißt, wenn andere Ingenieure Classa anrufen, können sie nur Methode Fun1 anrufen. Was sollten wir dann tun?
Zu diesem Zeitpunkt kann die Zugriffsberechtigungskontrolle eine Rolle spielen.
In Java werden vier Arten von Zugriffsrechtskontrolle bereitgestellt: Standardzugriffsrechte (Paketzugriffsrechte), öffentlich, privat und geschützt.
Beachten Sie, dass nur die Standard -Zugriffsberechtigungen und die Öffentlichkeit verwendet werden können, um die Klasse für die oben genannten vier Arten von Zugriffsberechtigungen zu ändern. Die vier Berechtigungen der modifizierten Klasse sind in Ordnung. (Die an diesem Ort erwähnten Klassen zielen auf externe Klassen ab, nicht auf interne Klassen)
Im Folgenden werden diese vier Zugriffsrechtskontrollen für Mitglieder der Änderungsklasse und der Änderungsklasse erläutert.
1. Modifikationskategorie
Standard -Zugriffsberechtigungen (Paketzugriffsberechtigungen): Wenn eine Klasse geändert wird, bedeutet dies, dass die Klasse nur für andere Klassen im selben Paket sichtbar ist.
Öffentlich: Wenn es zur Änderung einer Klasse verwendet wird, bedeutet dies, dass die Klasse für alle anderen Klassen sichtbar ist.
Schauen wir uns den Unterschied zwischen den beiden anhand einiger Beispiele an:
Beispiel 1:
Main.java:
Paket com.cxh.test1; public class main { / ** * @param args * / public static void main (String [] args) {// Todo automatisch generierte Methode Stub People people = new People ("tom"); System.out.println (people.getName ()); }} People.java
Paket com.cxh.test1; Klasse people {// Standard -Zugriffserlaubnis (Paketzugriffsberechtigung) private Zeichenfolge Name = NULL; public people (String name) {this.name = name; } public String getName () {return name; } public void setName (String -Name) {this.name = name; }}Wie aus dem Code hervorgeht, verwendet die Änderung der People -Klasse Standardzugangsberechtigungen. Da die People -Klasse und die Hauptklasse im selben Paket sind, ist die People -Klasse für die Hauptklasse sichtbar.
Programmauslaufergebnisse:
Beispiel 2:
People.java
Paket com.cxh.test2; Klasse people {// Standard -Zugriffserlaubnis (Paketzugriffsberechtigung) private Zeichenfolge Name = NULL; public people (String name) {this.name = name; } public String getName () {return name; } public void setName (String -Name) {this.name = name; }}Zu diesem Zeitpunkt befinden sich die People -Klasse und die Hauptklasse nicht im selben Paket. Was wird passieren?
Hier sind die in der Hauptklasse aufgeforderten Fehler:
Es fordert, dass die Peolple -Klasse in der Hauptklasse nicht sichtbar ist. Daraus können wir sehen, dass die Klasse, wenn eine Klasse mit Standardzugriffsberechtigungen geändert wird, nur für andere Klassen im selben Paket sichtbar ist und für Klassen in verschiedenen Paketen nicht sichtbar ist.
Wie in der schnellen Korrekturaufforderung in der obigen Abbildung gezeigt, ist die People -Klasse für die Hauptklasse sichtbar.
2. Methoden und Variablen der Änderung von Klassen
Standard -Zugriffsberechtigungen (Paketzugriffsberechtigungen): Wenn die Methoden oder Variablen einer Klasse durch Paketzugriffsberechtigungen geändert werden, können die Methoden oder Variablen der Klasse nur in anderen Klassen im selben Paket angezeigt werden, und die Methoden oder Variablen der Klasse können nicht in Klassen in verschiedenen Paketen angezeigt werden.
Privat: Wenn die Methoden oder Variablen einer Klasse durch private geändert werden, können die Methoden oder Variablen der Klasse nur in der Klasse selbst zugegriffen werden und können nicht in der Klasse oder in anderen Klassen angezeigt werden.
Schutz: Wenn die Methoden oder Variablen einer Klasse durch geschützte geändert werden, können die Methoden oder Variablen dieser Klasse für dieselbe Paketklasse zugegriffen werden. Für Klassen mit verschiedenen Paketen können nur Klassen, die aus dieser Klasse geerbt wurden, auf Methoden oder Variablen dieser Klasse zugreifen.
Öffentlich: Methoden oder Variablen, die von der Öffentlichkeit geändert wurden, sind überall sichtbar.
Nehmen wir einige Beispiele, um die Unterschiede zwischen ihren Scoped -Klassenmethoden und Variablen zu sehen:
Beispiel 3:
Main.java hat sich nicht verändert
People.java
Paket com.cxh.test1; public class people {private String name = null; public people (String name) {this.name = name; } String getName () {// Standard -Zugriffserlaubnis (Paketzugriffsberechtigung) Rückgabename; } void setName (String -Name) {// Standard -Zugriffserlaubnis (Paketzugriffsberechtigung) this.name = name; }}Zu diesem Zeitpunkt können die aufrufenden Methoden GetName und SetName in der Hauptklasse angezeigt werden.
Aber wenn die People -Klasse und die Hauptklasse nicht im selben Paket sind:
Paket com.cxh.test2; // Es befindet sich in einem anderen Paket der Hauptklasse der Hauptklasse People {private String name = null; public people (String name) {this.name = name; } String getName () {// Standard -Zugriffserlaubnis (Paketzugriffsberechtigung) Rückgabename; } void setName (String -Name) {// Standard -Zugriffserlaubnis (Paketzugriffsberechtigung) this.name = name; }}Zu diesem Zeitpunkt wird in der Hauptklasse ein Fehler aufgefordert:
Aus diesem Grund können wir sehen, dass, wenn die Standardzugriffserlaubnis zur Änderung der Methoden oder Variablen der Klasse verwendet wird, nur in anderen Klassen desselben Pakets zugegriffen werden kann.
Beispiel 4:
People.java
Paket com.cxh.test1; public class people {private String name = null; public people (String name) {this.name = name; } Protected String getName () {return name; } Protected void setName (String -Name) {this.name = name; }}Zu diesem Zeitpunkt können Sie die aufrufenden Methoden GetName und SetName in Main anzeigen.
Wenn sich die People -Klasse und die Hauptklasse in verschiedenen Paketen befinden:
Paket com.cxh.test2; public class people {private String name = null; public people (String name) {this.name = name; } Protected String getName () {return name; } Protected void setName (String -Name) {this.name = name; }}Ein Fehler wird in Main gemeldet:
Wenn ein Klassenmann in com.cxh.test1 angegeben ist, um Personen zu erben, können Sie die Anrufmethoden GetName und SetName im Klassenmann anzeigen:
Paket com.cxh.test1; import com.cxh.test2.people; Public Class Man erweitert Menschen {öffentlicher Mann (String -Name) {Super (Name); } public String toString () {return getName (); }}Hier finden Sie einige Kenntnisse über Java -Pakete und Klassendateien:
1) Die Pakete in Java werden hauptsächlich verwendet, um Konflikte für Klassendateien zu verhindern und die Organisation und das Management der Code zu erleichtern.
2) Für eine Java -Quellcode -Datei kann es nur eine öffentliche Klasse geben, und der Name der Quellcode -Datei muss genau mit dem Namen der öffentlichen Klasse übereinstimmen. Wenn es andere Klassen gibt, sind diese Klassen außerhalb des Pakets unsichtbar. Wenn die Quellcode -Datei keine öffentliche Klasse hat, kann der Name der Quellcode -Datei so genannt werden, wie sie gefällt.
Das Obige dreht sich alles um diesen Artikel, ich hoffe, es wird für das Lernen aller hilfreich sein.