Java Access Modifier (Zugriffsregler)
Java kontrolliert Zugriffsrechte und andere Funktionen von Klassen, Eigenschaften und Methoden durch Modifikatoren, die normalerweise am vorderen Ende einer Erklärung platziert sind. Zum Beispiel:
öffentliche Klasseklassenklassenname {// Klasse von Klasse} private boolean myflag; statische endgültige doppelte Wochen = 9,5; geschützte statische endgültige intboxwidth = 42; public s tatic void main (String [] Argumente) {// Körper der Methode}Es gibt viele Modifikatoren in Java, die in Zugangsmodifikatoren und Nicht-Zugriffsmodifikatoren unterteilt sind. In diesem Abschnitt werden nur Zugriffsmodifikatoren eingeführt, und später werden nicht zugängliche Modifikatoren eingeführt.
Zugriffsmodifikatoren werden auch als Zugriffskontrollzeichen bezeichnet, die sich auf Schlüsselwörter beziehen, die die Nutzungsrechte von Klassen, Mitgliedsvariablen und Methoden steuern können.
Zugriffscontroller sind ein wichtiges Konzept in der objektorientierten Programmierung und können zum Schutz des Zugriffs zu Klassen, Variablen, Methoden und Konstruktoren verwendet werden.
Java unterstützt vier verschiedene Zugriffsberechtigungen:
Öffentlich: öffentlich
Klassen, Methoden, Konstruktoren und Schnittstellen, die als öffentlich deklariert werden, können von jeder anderen Klasse zugegriffen werden.
Wenn mehrere öffentliche Klassen, auf die voneinander zugegriffen wird, in nicht verwendeten Paketen verteilt werden, müssen Sie das Paket importieren, in dem sich die entsprechende öffentliche Klasse befindet. Aufgrund der Vererbung der Klasse können alle öffentlichen Methoden und Variablen der Klasse durch ihre Unterklassen vererbt werden.
Die folgende Methode verwendet die öffentliche Zugriffskontrolle:
public static void main (String [] Argumente) {// Methodekörper} Die main () -Methode eines Java -Programms muss an öffentlich eingestellt sein, da ansonsten der Java -Interpreter die Klasse nicht ausführen kann.
geschützt: geschützt
Variablen, Methoden und Konstruktoren, die als geschützt deklariert sind, können von jeder anderen Klasse im selben Paket oder von Unterklassen in verschiedenen Paketen zugegriffen werden.
Der geschützte Zugriffsmodifikator kann Klassen und Schnittstellen nicht ändern.
Unterklassen können auf Methoden und Variablen zugreifen, die von geschützten Modifikatoren deklariert werden, sodass sie nicht verwandte Klassen vor der Verwendung dieser Methoden und Variablen schützen können.
Die folgende übergeordnete Klasse verwendet den geschützten Zugriffsmodifikator, und die Unterklasse überlädt die Bark () -Methode der übergeordneten Klasse.
öffentliche Klasse Hund {Protected void bark () {System.out.println ("wow, nicht vorbei"); , Ich habe sehr verängstigt, folge mir nicht ");}} Wenn die Bark () -Methode als privat deklariert wird, können andere Klassen als Hunde nicht auf die Methode zugreifen. Wenn Bark () öffentlich erklärt wird, können alle Klassen auf die Methode zugreifen. Wenn wir möchten, dass die Methode nur für eine Unterklasse der Klasse sichtbar ist, in der sie sich befindet, deklarieren Sie die Methode als geschützt.
privat: privat
Private Zugriffsmodifikatoren sind die strengste Zugangsstufe, sodass Methoden, Variablen und Konstruktoren, die als privat erklärt werden, nur von der Klasse zugegriffen werden können, zu der sie gehören, und Klassen und Schnittstellen können nicht als privat erklärt werden.
Variablen, die als privater Zugriffstyp deklariert sind, können nur von externen Klassen über die öffentlichen Getter/Setter -Methoden in der Klasse zugegriffen werden.
Die Verwendung des privaten Zugriffsmodifikators wird hauptsächlich verwendet, um die Implementierungsdetails der Klasse zu verbergen und die Daten der Klasse zu schützen.
Die folgende Klasse verwendet einen privaten Zugriffsmodifikator:
public class hund {privat string name; (int Alter) {this.age = älter;}}Im Beispiel sind die Namens- und Altersvariablen in der Hundeklasse private Variablen, sodass andere Klassen den Wert der Variablen nicht direkt erhalten und festlegen können. Um es anderen Klassen zu ermöglichen, die Variable zu manipulieren, werden zwei Paar öffentliche Methoden, GetName ()/setName () und getage ()/setage () definiert, mit denen die Werte privater Variablen erhalten und festgelegt werden.
Dies ist ein Schlüsselwort in Java.
Das Definieren von Methoden zum Zugriff auf private Variablen in einer Klasse ist üblich, um sie so zu nennen: Präfix "Get" oder "Set" im Variablennamen und nutzen Sie den Anfangsbuchstaben der Variablen. Beispielsweise ist die Methode, um den privaten Variablennamen zu erhalten, getName () und die Methode zum festgelegten Namen ist setName (). Diese Methoden werden häufig verwendet und haben spezifische Namen, die als Getter- und Setter -Methoden bezeichnet werden.
Standard: Es werden keine Schlüsselwörter verwendet
Kein Modifikator deklarierter Eigenschaften und Methoden sind für Klassen innerhalb desselben Pakets sichtbar. Alle Variablen in der Schnittstelle werden implizit als öffentliches statisches Finale deklariert, während die Methoden in der Schnittstelle standardmäßig öffentlich sind.
Wie im folgenden Beispiel gezeigt, verwendet die Definition von Klassen, Variablen und Methoden keine Modifikatoren:
Klassenhund {String -Name; Meister, ich habe hungrig ");}}Zugangskontrolle und Vererbung
Bitte beachten Sie die folgenden Vererbungsregeln (Leser, die das Konzept der Vererbung nicht verstehen, können hier überspringen oder auf Java -Erbschaft und polymorphe Vorschau klicken):
Methoden, die in der Elternklasse als öffentlich deklariert sind, müssen auch in der Kinderklasse öffentlich sein.
Die in der Elternklasse als geschützten Methoden werden entweder als geschützt oder in der Kinderklasse beschützt oder öffentlich deklariert. Kann nicht als privat erklärt werden.
Methoden, die Standardmodifikatoren in der übergeordneten Klasse deklariert haben, können in Unterklassen als privat erklärt werden.
Methoden, die in der Elternklasse als privat erklärt werden, können nicht geerbt werden.
So verwenden Sie Zugriffssteuerungszeichen
Zu den Zugriffskontrollzeichen können wir die Berechtigungen des Codes problemlos steuern:
Wenn Sie die Klasse, die Sie zugreifen, auf alle anderen Klassen erstellen müssen, können Sie die Zugriffskontrolle der Klasse als öffentlich angeben.
Wenn Sie Ihre Klasse nur über die Klassen in Ihrem eigenen Paket zugänglich machen müssen, kann das Access Control -Charakter weggelassen werden.
Wenn die Mitgliedsdaten in einer Klasse kontrollieren müssen, können die Member -Datenzugriffskontrollzeichen in dieser Klasse auf öffentlich, geschützt oder weggelassen werden.
Umfang der Java -Variablen <br /> In Java ist der Umfang der Variablen in vier Ebenen unterteilt: Klassenebene, Objektinstanzebene, Methodenebene und Blockebene.
Variablen auf Klassenebene werden auch als globale Variablen oder statische Variablen bezeichnet. Variablen auf Klassenebene existieren bereits nach der Klassendefinition, belegen Speicherplatz, können über Klassennamen zugegriffen werden und müssen nicht instanziiert werden.
Eine Variable auf Objektinstanzebene ist eine Mitgliedsvariable.
Variablen auf Methodenebene sind Variablen, die in Methoden definiert sind, bei denen es sich um lokale Variablen handelt.
Block-Level-Variablen sind in einem Block definierten Variablen. Blöcke beziehen sich auf Code, umgeben von Zahnspangen, zum Beispiel:
{int age = 3; Fehler, das Alter und den Namen Variablen System.out.println (Name + "bereits" + Alter + Jahre alt "); veranschaulichen:
Zusätzlich zum Zugriff auf Variablen auf Methodenebene können Methoden auch Variablen auf Klassenebene und Instanzebene zugreifen.
Innerhalb eines Blocks können Variablen auf Klassenebene und Instanzebene zugegriffen werden.
Methoden- und Blockebenevariablen müssen angezeigt werden, da sonst nicht zugegriffen werden kann.
Democode:
Public Class Demo {public statische String name = "wixUeyuan"; test1 () {int j = 3; nur können auf System zugreifen.out.println ("name =" + name + ", i =" + i + ", j =" + j);} public static void main (String [] args) {// no create Ein Objekt, greifen Sie auf das variable System auf Klassenebene zu. Auslaufergebnisse:
Name der Micro Academy = Micro Academy, i = 0, j = 3