Heim Java javaLernprogramm Ausführliche Erläuterung der Zugriffsberechtigungsmodifikatoren in Java anhand von Beispielen

Ausführliche Erläuterung der Zugriffsberechtigungsmodifikatoren in Java anhand von Beispielen

Jan 24, 2017 pm 03:36 PM

Zugriffsberechtigungssymbol:
(1) öffentlich:
Für Mitglieder: Jede andere Klasse kann darauf zugreifen, egal ob im selben Paket oder in einem anderen Paket.
Für den Unterricht: Das Gleiche gilt.
(2)freundlich:
Wenn die Mitglieder einer Klasse keine Berechtigungsänderung haben, verfügen sie über die Standardpaketzugriffsberechtigungen, die durch freundlich dargestellt werden, beachten Sie

freundlich Es ist kein Schlüsselwort in Java, es ist einfach die Art und Weise, wie ich es gerne ausdrücke. Andere Klassen im selben Paket können darauf zugreifen,

außerhalb des Pakets jedoch nicht. Bei Klassen im selben Ordner, die keine Pakete verwenden, erkennt Java diese Klassen automatisch zuerst als Standardpaket, das zum Verzeichnis

gehört, und befreundete Mitglieder in der Klasse können sich gegenseitig anrufen. Die folgenden zwei Klassen befinden sich beispielsweise in zwei Dateien

im selben Ordner. Obwohl kein Paket eingeführt wird, gehören sie zum selben Standardpaket.

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();
}
}
Nach dem Login kopieren

Für Kurse: Kurse im gleichen Paket können verwendet werden. Kurz gesagt, Klassen können nur als öffentlich oder freundlich deklariert werden.
(3)privat:
Für Mitglieder: Es kann nur in der Klasse darauf zugegriffen werden, zu der das Mitglied gehört.

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();
   }
   }
Nach dem Login kopieren

Für Kurse: Kurse können nicht als privat deklariert werden.

(4)protected:
Für Mitglieder: Klassen im selben Paket können darauf zugreifen (Paketzugriffsrechte); die Basisklasse gewährt den Mitgliedern in der Basisklasse Zugriffsrechte auf die abgeleitete Klasse durch protected, nicht alle Klassen (abgeleiteter Klassenzugriff).

(5)default (Standardberechtigung)
Klassen, Datenmitglieder, Konstruktoren und Methodenmitglieder können alle Standardberechtigungen verwenden, dh keine Schlüsselwörter schreiben. Die Standardberechtigung ist dieselbe Paketberechtigung. Elemente mit derselben Paketberechtigung können nur in der Klasse aufgerufen werden, in der sie definiert sind, und in Klassen im selben Paket.

Beispiel: Paket 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
   
  }
} ///:~
Nach dem Login kopieren
package pack1;
 
public class Cookie {
public Cookie()
{
System.out.println("Cookie constructor");
}
 
protected void bite(){System.out.println("bite");}
 
}
Nach dem Login kopieren

Für eine Klasse: Eine Klasse kann nicht als geschützt deklariert werden

Für eine Klasse Berechtigungsänderung, unten gibt es eine bessere Erklärung:

Klassenklassenzugriffsberechtigungen:
Öffentlich: Alle Klassen können darauf zugreifen.
Standard: Der Standardwert kann freundlich genannt werden. In der Java-Sprache gibt es jedoch keinen freundlichen Modifikator. Die Standardzugriffsberechtigungen sind Zugriffsberechtigungen auf Paketebene.
Das heißt, wenn Sie eine Klasse schreiben, ohne den Zugriffsberechtigungsmodifikator zu schreiben, ist dies die Standardzugriffsberechtigung, und alle Klassen unter demselben Paket können darauf zugreifen, auch wenn die Klasse instanziiert werden kann
(Natürlich , wenn diese Klasse nicht über die Fähigkeit zur Instanziierung verfügt (z. B. stellt die Klasse keinen öffentlichen Konstruktor bereit).

Hinweis:
1. Jede Kompilierungseinheit (Klassendatei) kann nur eine öffentliche Klasse haben
2. Der Name der öffentlichen Klasse (einschließlich Groß- und Kleinschreibung) muss denselben Namen haben wie seine Klassendatei.
3. Die öffentliche Klasse muss nicht in einer Klassendatei (*.java) vorhanden sein.
Szenarien, in denen diese Form existiert: Wenn wir eine Klasse in ein Paket schreiben, dient sie nur dazu, mit anderen Klassen im selben Paket zusammenzuarbeiten, und
Wir möchten keine Dokumentation für Kunden schreiben (nicht unbedingt). ein echter Kunde, es kann eine Klasse sein, die diese Klasse aufruft), was nervenaufreibend zu sehen ist, und es ist möglich, dass es nach einer gewissen Zeit
den ursprünglichen Ansatz komplett ändert und den alten komplett aufgibt Version und ersetzen Sie sie durch eine brandneue Version.
4. Der Unterricht darf nicht privat oder geschützt sein.
5. Wenn Sie nicht möchten, dass Objekte einer bestimmten Klasse generiert werden, können Sie alle Konstruktoren der Klasse auf privat setzen. Aber auch auf diese Weise können Objekte dieser Klasse generiert werden, das heißt, die statischen Mitglieder (Eigenschaften und Methoden) der Klasse können dies tun.

Umfassendes Beispiel:
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);
}
}
Nach dem Login kopieren

Ausgabe:

java
hello test
hello test
Nach dem Login kopieren

Mehr bitte Achten Sie auf die chinesische PHP-Website für verwandte Artikel, in denen die Zugriffsberechtigungsmodifikatoren in Java anhand von Beispielen erläutert werden!


Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat -Befehle und wie man sie benutzt
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie funktioniert der Klassenladungsmechanismus von Java, einschließlich verschiedener Klassenloader und deren Delegationsmodelle? Wie funktioniert der Klassenladungsmechanismus von Java, einschließlich verschiedener Klassenloader und deren Delegationsmodelle? Mar 17, 2025 pm 05:35 PM

Mit der Klassenbelastung von Java wird das Laden, Verknüpfen und Initialisieren von Klassen mithilfe eines hierarchischen Systems mit Bootstrap-, Erweiterungs- und Anwendungsklassenloadern umfasst. Das übergeordnete Delegationsmodell stellt sicher

Wie implementiere ich mehrstufige Caching in Java-Anwendungen mit Bibliotheken wie Koffein oder Guava-Cache? Wie implementiere ich mehrstufige Caching in Java-Anwendungen mit Bibliotheken wie Koffein oder Guava-Cache? Mar 17, 2025 pm 05:44 PM

In dem Artikel wird in der Implementierung von mehrstufigem Caching in Java mithilfe von Koffein- und Guava-Cache zur Verbesserung der Anwendungsleistung erläutert. Es deckt die Einrichtungs-, Integrations- und Leistungsvorteile sowie die Bestrafung des Konfigurations- und Räumungsrichtlinienmanagements ab

Wie kann ich JPA (Java Persistence-API) für Objektrelationszuordnungen mit erweiterten Funktionen wie Caching und faulen Laden verwenden? Wie kann ich JPA (Java Persistence-API) für Objektrelationszuordnungen mit erweiterten Funktionen wie Caching und faulen Laden verwenden? Mar 17, 2025 pm 05:43 PM

In dem Artikel werden mit JPA für Objektrelationszuordnungen mit erweiterten Funktionen wie Caching und faulen Laden erläutert. Es deckt Setup, Entity -Mapping und Best Practices zur Optimierung der Leistung ab und hebt potenzielle Fallstricke hervor. [159 Charaktere]

Wie benutze ich Maven oder Gradle für das fortschrittliche Java -Projektmanagement, die Erstellung von Automatisierung und Abhängigkeitslösung? Wie benutze ich Maven oder Gradle für das fortschrittliche Java -Projektmanagement, die Erstellung von Automatisierung und Abhängigkeitslösung? Mar 17, 2025 pm 05:46 PM

In dem Artikel werden Maven und Gradle für Java -Projektmanagement, Aufbau von Automatisierung und Abhängigkeitslösung erörtert, die ihre Ansätze und Optimierungsstrategien vergleichen.

Wie erstelle und verwende ich benutzerdefinierte Java -Bibliotheken (JAR -Dateien) mit ordnungsgemäßem Versioning und Abhängigkeitsmanagement? Wie erstelle und verwende ich benutzerdefinierte Java -Bibliotheken (JAR -Dateien) mit ordnungsgemäßem Versioning und Abhängigkeitsmanagement? Mar 17, 2025 pm 05:45 PM

In dem Artikel werden benutzerdefinierte Java -Bibliotheken (JAR -Dateien) mit ordnungsgemäßem Versioning- und Abhängigkeitsmanagement erstellt und verwendet, wobei Tools wie Maven und Gradle verwendet werden.

See all articles