国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Inhaltsverzeichnis
Java-Modifikatoren
Zugriffskontrollmodifikatoren
默認(rèn)訪問(wèn)修飾符-不使用任何關(guān)鍵字
私有訪問(wèn)修飾符-private" >私有訪問(wèn)修飾符-private
公有訪問(wèn)修飾符-public
受保護(hù)的訪問(wèn)修飾符-protected
訪問(wèn)控制和繼承
非訪問(wèn)修飾符
static 修飾符
final 修飾符
abstract 修飾符
synchronized 修飾符
transient 修飾符
volatile 修飾符
Heim Java JavaBase Was bedeutet privat in Java?

Was bedeutet privat in Java?

Nov 24, 2022 pm 06:27 PM
java private

Private bedeutet in Java ?privat“ und ist ein Zugriffskontrollmodifikator, der zum ?ndern von Klassen, Eigenschaften und Methoden verwendet wird. Mit ?private“ ge?nderte Klassenmitglieder k?nnen nur von den Methoden der Klasse selbst aufgerufen und ge?ndert werden und k?nnen von keiner anderen Klasse (einschlie?lich Unterklassen der Klasse) aufgerufen und referenziert werden. Daher verfügt der private Modifikator über die h?chste Schutzstufe.

Was bedeutet privat in Java?

Die Betriebsumgebung dieses Tutorials: Windows7-System, Java8-Version, DELL G3-Computer.

Java-Modifikatoren

Die Java-Sprache bietet viele Modifikatoren, die haupts?chlich in die folgenden zwei Kategorien unterteilt sind:

  • Zugriffsmodifikatoren
  • Nichtzugriffsmodifikatoren

Modifikatoren werden zum Definieren von Klassen, Methoden oder Variablen verwendet , normalerweise am Anfang der Erkl?rung platziert. Zur Veranschaulichung verwenden wir das folgende Beispiel:

public?class?ClassName?{
???//?...
}
private?boolean?myFlag;
static?final?double?weeks?=?9.5;
protected?static?final?int?BOXWIDTH?=?42;
public?static?void?main(String[]?arguments)?{
???//?方法體
}

Zugriffskontrollmodifikatoren

In Java k?nnen Sie Zugriffskontrollmodifikatoren verwenden, um den Zugriff auf Klassen, Variablen, Methoden und Konstruktoren zu schützen. Java unterstützt 4 verschiedene Zugriffsrechte.

  • Standard (d. h. Standard, nichts schreiben): Sichtbar im selben Paket, es werden keine Modifikatoren verwendet. Verwenden Sie Objekte: Klassen, Schnittstellen, Variablen, Methoden.

  • privat (Privat): Sichtbar innerhalb derselben Kategorie. Verwenden Sie Objekte: Variablen, Methoden. Hinweis: Klassen (externe Klassen) k?nnen nicht ge?ndert werden.

  • ?ffentlich: Für alle Klassen sichtbar. Verwendete Objekte: Klassen, Schnittstellen, Variablen, Methoden

  • protected: Sichtbar für Klassen und alle Unterklassen im selben Paket. Verwenden Sie Objekte: Variablen, Methoden. Hinweis: Klassen (externe Klassen) k?nnen nicht ge?ndert werden.

Wir k?nnen Zugriffsberechtigungen anhand der folgenden Tabelle veranschaulichen:

YdefaultYYYNN
Zugriffskontrolle
Modifikatoren Aktuelle Klasse Im selben Paket Nachkommende Klassen (gleiches Paket) Nachkommende Klassen (verschiedene Pakete) Andere Pakete Y
Npublic Y Y Y Y Y
protected Y Y Y Y N
default Y Y Y N N
private
??????privat?? ??Y ????N????N????N????N????????

默認(rèn)訪問(wèn)修飾符-不使用任何關(guān)鍵字

使用默認(rèn)訪問(wèn)修飾符聲明的變量和方法,對(duì)同一個(gè)包內(nèi)的類是可見(jiàn)的。接口里的變量都隱式聲明為?public static final,而接口里的方法默認(rèn)情況下訪問(wèn)權(quán)限為?public。

如下例所示,變量和方法的聲明可以不使用任何修飾符。

實(shí)例

String?version?=?"1.5.1";
boolean?processOrder()?{
???return?true;
}

私有訪問(wèn)修飾符-private

私有訪問(wèn)修飾符是最嚴(yán)格的訪問(wèn)級(jí)別,所以被聲明為?private?的方法、變量和構(gòu)造方法只能被所屬類訪問(wèn),并且類和接口不能聲明為?private。

聲明為私有訪問(wèn)類型的變量只能通過(guò)類中公共的 getter 方法被外部類訪問(wèn)。

Private 訪問(wèn)修飾符的使用主要用來(lái)隱藏類的實(shí)現(xiàn)細(xì)節(jié)和保護(hù)類的數(shù)據(jù)。

下面的類使用了私有訪問(wèn)修飾符:

public?class?Logger?{
???private?String?format;
???public?String?getFormat()?{
??????return?this.format;
???}
???public?void?setFormat(String?format)?{
??????this.format?=?format;
???}
}

實(shí)例中,Logger 類中的 format 變量為私有變量,所以其他類不能直接得到和設(shè)置該變量的值。為了使其他類能夠操作該變量,定義了兩個(gè) public 方法:getFormat() (返回 format的值)和 setFormat(String)(設(shè)置 format 的值)

公有訪問(wèn)修飾符-public

被聲明為 public 的類、方法、構(gòu)造方法和接口能夠被任何其他類訪問(wèn)。

如果幾個(gè)相互訪問(wèn)的 public 類分布在不同的包中,則需要導(dǎo)入相應(yīng) public 類所在的包。由于類的繼承性,類所有的公有方法和變量都能被其子類繼承。

以下函數(shù)使用了公有訪問(wèn)控制:

public?static?void?main(String[]?arguments)?{
???//?...
}

Java 程序的 main() 方法必須設(shè)置成公有的,否則,Java 解釋器將不能運(yùn)行該類。

受保護(hù)的訪問(wèn)修飾符-protected

protected 需要從以下兩個(gè)點(diǎn)來(lái)分析說(shuō)明:

  • 子類與基類在同一包中:被聲明為 protected 的變量、方法和構(gòu)造器能被同一個(gè)包中的任何其他類訪問(wèn);

  • 子類與基類不在同一包中:那么在子類中,子類實(shí)例可以訪問(wèn)其從基類繼承而來(lái)的 protected 方法,而不能訪問(wèn)基類實(shí)例的非protected修飾的方法。

protected 可以修飾數(shù)據(jù)成員,構(gòu)造方法,方法成員,不能修飾類(內(nèi)部類除外)。

接口及接口的成員變量和成員方法不能聲明為 protected。 可以看看下圖演示:

子類能訪問(wèn) protected 修飾符聲明的方法和變量,這樣就能保護(hù)不相關(guān)的類使用這些方法和變量。

下面的父類使用了 protected 訪問(wèn)修飾符,子類重寫(xiě)了父類的 openSpeaker() 方法。

class?AudioPlayer?{
???protected?boolean?openSpeaker(Speaker?sp)?{
??????//?實(shí)現(xiàn)細(xì)節(jié)
???}
}
?
class?StreamingAudioPlayer?extends?AudioPlayer?{
???protected?boolean?openSpeaker(Speaker?sp)?{
??????//?實(shí)現(xiàn)細(xì)節(jié)
???}
}

如果把 openSpeaker() 方法聲明為 private,那么除了 AudioPlayer 之外的類將不能訪問(wèn)該方法。

如果把 openSpeaker() 聲明為 public,那么所有的類都能夠訪問(wèn)該方法。

如果我們只想讓該方法對(duì)其所在類的子類可見(jiàn),則將該方法聲明為 protected。

protected 是最難理解的一種 Java 類成員訪問(wèn)權(quán)限修飾詞,更多詳細(xì)內(nèi)容請(qǐng)查看?Java protected 關(guān)鍵字詳解。

訪問(wèn)控制和繼承

請(qǐng)注意以下方法繼承的規(guī)則:

  • 父類中聲明為 public 的方法在子類中也必須為 public。

  • 父類中聲明為 protected 的方法在子類中要么聲明為 protected,要么聲明為 public,不能聲明為 private。

  • 父類中聲明為 private 的方法,不能夠被繼承。


非訪問(wèn)修飾符

為了實(shí)現(xiàn)一些其他的功能,Java 也提供了許多非訪問(wèn)修飾符。

static 修飾符,用來(lái)修飾類方法和類變量。

final 修飾符,用來(lái)修飾類、方法和變量,final 修飾的類不能夠被繼承,修飾的方法不能被繼承類重新定義,修飾的變量為常量,是不可修改的。

abstract 修飾符,用來(lái)創(chuàng)建抽象類和抽象方法。

synchronized 和 volatile 修飾符,主要用于線程的編程。

static 修飾符

  • 靜態(tài)變量:

    static 關(guān)鍵字用來(lái)聲明獨(dú)立于對(duì)象的靜態(tài)變量,無(wú)論一個(gè)類實(shí)例化多少對(duì)象,它的靜態(tài)變量只有一份拷貝。 靜態(tài)變量也被稱為類變量。局部變量不能被聲明為 static 變量。

  • 靜態(tài)方法:

    static 關(guān)鍵字用來(lái)聲明獨(dú)立于對(duì)象的靜態(tài)方法。靜態(tài)方法不能使用類的非靜態(tài)變量。靜態(tài)方法從參數(shù)列表得到數(shù)據(jù),然后計(jì)算這些數(shù)據(jù)。

對(duì)類變量和方法的訪問(wèn)可以直接使用?classname.variablename?和?classname.methodname?的方式訪問(wèn)。

如下例所示,static修飾符用來(lái)創(chuàng)建類方法和類變量。

public?class?InstanceCounter?{
???private?static?int?numInstances?=?0;
???protected?static?int?getCount()?{
??????return?numInstances;
???}
?
???private?static?void?addInstance()?{
??????numInstances++;
???}
?
???InstanceCounter()?{
??????InstanceCounter.addInstance();
???}
?
???public?static?void?main(String[]?arguments)?{
??????System.out.println("Starting?with?"?+
??????InstanceCounter.getCount()?+?"?instances");
??????for?(int?i?=?0;?i?<?500;?++i){
?????????new?InstanceCounter();
??????????}
??????System.out.println("Created?"?+
??????InstanceCounter.getCount()?+?"?instances");
???}
}

以上實(shí)例運(yùn)行編輯結(jié)果如下:

Starting?with?0?instances
Created?500?instances

final 修飾符

final 變量:

final 表示"最后的、最終的"含義,變量一旦賦值后,不能被重新賦值。被 final 修飾的實(shí)例變量必須顯式指定初始值。

final 修飾符通常和 static 修飾符一起使用來(lái)創(chuàng)建類常量。

實(shí)例

public?class?Test{
??final?int?value?=?10;
??//?下面是聲明常量的實(shí)例
??public?static?final?int?BOXWIDTH?=?6;
??static?final?String?TITLE?=?"Manager";
?
??public?void?changeValue(){
?????value?=?12;?//將輸出一個(gè)錯(cuò)誤
??}
}

final 方法

父類中的 final 方法可以被子類繼承,但是不能被子類重寫(xiě)。

聲明 final 方法的主要目的是防止該方法的內(nèi)容被修改。

如下所示,使用 final 修飾符聲明方法。

public?class?Test{
????public?final?void?changeName(){
???????//?方法體
????}
}

final 類

final 類不能被繼承,沒(méi)有類能夠繼承 final 類的任何特性。

實(shí)例

public?final?class?Test?{
???//?類體
}

abstract 修飾符

抽象類:

抽象類不能用來(lái)實(shí)例化對(duì)象,聲明抽象類的唯一目的是為了將來(lái)對(duì)該類進(jìn)行擴(kuò)充。

一個(gè)類不能同時(shí)被 abstract 和 final 修飾。如果一個(gè)類包含抽象方法,那么該類一定要聲明為抽象類,否則將出現(xiàn)編譯錯(cuò)誤。

抽象類可以包含抽象方法和非抽象方法。

實(shí)例

abstract?class?Caravan{
???private?double?price;
???private?String?model;
???private?String?year;
???public?abstract?void?goFast();?//抽象方法
???public?abstract?void?changeColor();
}

抽象方法

抽象方法是一種沒(méi)有任何實(shí)現(xiàn)的方法,該方法的的具體實(shí)現(xiàn)由子類提供。

抽象方法不能被聲明成 final 和 static。

任何繼承抽象類的子類必須實(shí)現(xiàn)父類的所有抽象方法,除非該子類也是抽象類。

如果一個(gè)類包含若干個(gè)抽象方法,那么該類必須聲明為抽象類。抽象類可以不包含抽象方法。

抽象方法的聲明以分號(hào)結(jié)尾,例如:public abstract sample();

實(shí)例

public?abstract?class?SuperClass{
????abstract?void?m();?//抽象方法
}
?
class?SubClass?extends?SuperClass{
?????//實(shí)現(xiàn)抽象方法
??????void?m(){
??????????.........
??????}
}

synchronized 修飾符

synchronized 關(guān)鍵字聲明的方法同一時(shí)間只能被一個(gè)線程訪問(wèn)。synchronized 修飾符可以應(yīng)用于四個(gè)訪問(wèn)修飾符。

實(shí)例

public?synchronized?void?showDetails(){
.......
}

transient 修飾符

序列化的對(duì)象包含被 transient 修飾的實(shí)例變量時(shí),java 虛擬機(jī)(JVM)跳過(guò)該特定的變量。

該修飾符包含在定義變量的語(yǔ)句中,用來(lái)預(yù)處理類和變量的數(shù)據(jù)類型。

實(shí)例

public?transient?int?limit?=?55;???//?不會(huì)持久化
public?int?b;?//?持久化

volatile 修飾符

volatile 修飾的成員變量在每次被線程訪問(wèn)時(shí),都強(qiáng)制從共享內(nèi)存中重新讀取該成員變量的值。而且,當(dāng)成員變量發(fā)生變化時(shí),會(huì)強(qiáng)制線程將變化值回寫(xiě)到共享內(nèi)存。這樣在任何時(shí)刻,兩個(gè)不同的線程總是看到某個(gè)成員變量的同一個(gè)值。

一個(gè) volatile 對(duì)象引用可能是 null。

實(shí)例

public?class?MyRunnable?implements?Runnable
{
????private?volatile?boolean?active;
????public?void?run()
????{
????????active?=?true;
????????while?(active)?//?第一行
????????{
????????????//?代碼
????????}
????}
????public?void?stop()
????{
????????active?=?false;?//?第二行
????}
}

通常情況下,在一個(gè)線程調(diào)用 run() 方法(在 Runnable 開(kāi)啟的線程),在另一個(gè)線程調(diào)用 stop() 方法。 如果?第一行?中緩沖區(qū)的 active 值被使用,那么在?第二行?的 active 值為 false 時(shí)循環(huán)不會(huì)停止。

但是以上代碼中我們使用了 volatile 修飾 active,所以該循環(huán)會(huì)停止。

更多相關(guān)知識(shí),請(qǐng)?jiān)L問(wèn)常見(jiàn)問(wèn)題欄目!

Das obige ist der detaillierte Inhalt vonWas bedeutet privat in Java?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

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.

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem v?llig kostenlosen KI-Gesichtstausch-Tool aus!

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)

Hei?e Themen

PHP-Tutorial
1502
276
Wie gehe ich mit Transaktionen in Java mit JDBC um? Wie gehe ich mit Transaktionen in Java mit JDBC um? Aug 02, 2025 pm 12:29 PM

Um JDBC -Transaktionen korrekt zu verarbeiten, müssen Sie zun?chst den automatischen Komiti -Modus ausschalten und dann mehrere Vorg?nge ausführen und schlie?lich entsprechend den Ergebnissen festlegen oder rollen. 1. Nennen Sie Conn.SetAutoCommit (False), um die Transaktion zu starten. 2. Führen Sie mehrere SQL -Operationen aus, z. B. einfügen und aktualisieren. 3. Rufen Sie Conn.Commit () an, wenn alle Vorg?nge erfolgreich sind, und rufen Sie Conn.Rollback () auf, wenn eine Ausnahme auftritt, um die Datenkonsistenz zu gew?hrleisten. Gleichzeitig sollten Try-with-Ressourcen verwendet werden, um Ressourcen zu verwalten, Ausnahmen ordnungsgem?? zu behandeln und Verbindungen zu schlie?en, um Verbindungsleckage zu vermeiden. Darüber hinaus wird empfohlen, Verbindungspools zu verwenden und Save -Punkte zu setzen, um teilweise Rollback zu erreichen und Transaktionen so kurz wie m?glich zu halten, um die Leistung zu verbessern.

Wie arbeite man mit Kalender in Java? Wie arbeite man mit Kalender in Java? Aug 02, 2025 am 02:38 AM

Verwenden Sie Klassen im Java.Time -Paket, um das alte Datum und die Kalenderklassen zu ersetzen. 2. Erhalten Sie das aktuelle Datum und die aktuelle Uhrzeit durch LocalDate, LocalDatetime und Local Time; 3. Erstellen Sie ein bestimmtes Datum und eine bestimmte Uhrzeit mit der von () Methode; 4.. Verwenden Sie die Plus/Minus -Methode, um die Zeit nicht zu erh?hen und zu verkürzen. 5. Verwenden Sie ZonedDatetime und zoneId, um die Zeitzone zu verarbeiten. 6. Format und analysieren Sie Datumszeichenfolgen über DateTimeFormatter; 7. Verwenden Sie sofortige, um bei Bedarf mit den alten Datumstypen kompatibel zu sein. Die Verarbeitung der Datum in der modernen Java sollte der Verwendung von Java.Timeapi vorrangig machen, was klare, unver?nderliche und linear ist

Vergleich von Java Frameworks: Spring Boot vs Quarkus gegen Micronaut Vergleich von Java Frameworks: Spring Boot vs Quarkus gegen Micronaut Aug 04, 2025 pm 12:48 PM

Pre-Formancetartuptimemoryusage, QuarkusandmicronautleadduToCompile-Time-foringandgraalvSupport, WithQuarkusofttenperformLightBetterin serverloser Szenarien.2. Thyvelopecosystem,

Verst?ndnis von Netzwerkports und Firewalls Verst?ndnis von Netzwerkports und Firewalls Aug 01, 2025 am 06:40 AM

Networkportsandfirewallsworktogethertoenablecommunicationwhileensuringsecurity.1.Networkportsarevirtualendpointsnumbered0–65535,withwell-knownportslike80(HTTP),443(HTTPS),22(SSH),and25(SMTP)identifyingspecificservices.2.PortsoperateoverTCP(reliable,c

Wie funktioniert die Müllsammlung in Java? Wie funktioniert die Müllsammlung in Java? Aug 02, 2025 pm 01:55 PM

Die Müllsammlung von Java (GC) ist ein Mechanismus, der automatisch den Speicher verwaltet, der das Risiko eines Speicherlecks verringert, indem unerreichbare Objekte zurückgeführt werden. 1.GC beurteilt die Zug?nglichkeit des Objekts aus dem Stammobjekt (z. B. Stapelvariablen, aktive Threads, statische Felder usw.) und nicht erreichbare Objekte als Müll markiert. 2. Basierend auf dem markierten Algorithmus markieren Sie alle erreichbaren Objekte und l?schen Sie nicht markierte Objekte. 3.. Verfolgen Sie eine Generationskollektionsstrategie: Die neue Generation (Eden, S0, S1) führt h?ufig MollGC aus; Die ?lteren Menschen erzielen weniger, dauert jedoch l?nger, um MajorGC durchzuführen. MetaPace speichert Klassenmetadaten. 4. JVM bietet eine Vielzahl von GC -Ger?ten: SerialGC ist für kleine Anwendungen geeignet; ParallelgC verbessert den Durchsatz; CMS reduziert sich

Verwenden von HTML `Input` -Typen für Benutzerdaten Verwenden von HTML `Input` -Typen für Benutzerdaten Aug 03, 2025 am 11:07 AM

Durch die Auswahl des richtigen HTMlinput -Typs kann die Datengenauigkeit verbessert, die Benutzererfahrung verbessert und die Benutzerfreundlichkeit verbessert werden. 1. W?hlen Sie die entsprechenden Eingabetypen gem?? dem Datentyp aus, z. B. Text, E -Mail, Tel, Nummer und Datum, die automatisch überprüft und an die Tastatur anpassen k?nnen. 2. Verwenden Sie HTML5, um neue Typen wie URL, Farbe, Reichweite und Suche hinzuzufügen, die eine intuitivere Interaktionsmethode bieten k?nnen. 3.. Verwenden Sie Platzhalter und erforderliche Attribute, um die Effizienz und Genauigkeit der Formulierung zu verbessern. Es sollte jedoch beachtet werden, dass der Platzhalter das Etikett nicht ersetzen kann.

Vergleich von Java -Build -Werkzeugen: Maven vs. Gradle Vergleich von Java -Build -Werkzeugen: Maven vs. Gradle Aug 03, 2025 pm 01:36 PM

GradleStheBetterChoiceFormostnewProjectsDuetoitSuperiorFlexibilit?t, Leistung und ModerntoolingSupport.1.GRADLE'SGROOVY/KOTLINDSLISMORECONCISEANDEIPRESSIVETHANMANMANBOSEXML.2.GRAGRECONCISEANDEPRPRESSIVETHANMAVENSVOSEXML.2.

Gehen Sie mit einer Beispielverschiebung erkl?rt Gehen Sie mit einer Beispielverschiebung erkl?rt Aug 02, 2025 am 06:26 AM

Auf Defer wird verwendet, um bestimmte Vorg?nge auszuführen, bevor die Funktion zurückgibt, z. B. die Reinigungsressourcen. Die Parameter werden sofort bewertet, wenn sie aufgeschoben werden, und die Funktionen werden in der Reihenfolge von Last-In-First-Out (LIFO) ausgeführt. 1. Mehrere Defers werden in umgekehrter Reihenfolge der Erkl?rungen ausgeführt. 2. h?ufig für die sichere Reinigung wie das Schlie?en von Dateien verwendet; 3. Der benannte Rückgabewert kann ge?ndert werden; V. 5. Vermeiden Sie den Missbrauch von Verschiebungen in Schleifen, um Ressourcenleckage zu verhindern. Die korrekte Verwendung kann die Sicherheit und die Lesbarkeit der Code verbessern.

See all articles