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

Table des matières
Modificateurs Java
Modificateurs de contr?le d'accès
默認(rèn)訪問修飾符-不使用任何關(guān)鍵字
私有訪問修飾符-private" >私有訪問修飾符-private
公有訪問修飾符-public
受保護的訪問修飾符-protected
訪問控制和繼承
非訪問修飾符
static 修飾符
final 修飾符
abstract 修飾符
synchronized 修飾符
transient 修飾符
volatile 修飾符
Maison Java JavaBase Que signifie privé en Java

Que signifie privé en Java

Nov 24, 2022 pm 06:27 PM
java private

En Java, private signifie ? privé ? et est un modificateur de contr?le d'accès utilisé pour modifier les classes, les propriétés et les méthodes. Les membres de la classe modifiés avec private ne peuvent être consultés et modifiés que par les méthodes de la classe elle-même, et ne peuvent être consultés et référencés par aucune autre classe (y compris les sous-classes de la classe, par conséquent, le modificateur private a le niveau de protection le plus élevé) ;

Que signifie privé en Java

L'environnement d'exploitation de ce tutoriel : système windows7, version java8, ordinateur DELL G3.

Modificateurs Java

Le langage Java propose de nombreux modificateurs, qui sont principalement répartis dans les deux catégories suivantes :

  • Modificateurs d'accès
  • Modificateurs de non-accès

Les modificateurs sont utilisés pour définir des classes, des méthodes ou des variables , généralement placé au début de la déclaration. Nous utilisons l'exemple suivant pour illustrer?:

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

Modificateurs de contr?le d'accès

En Java, vous pouvez utiliser des modificateurs de contr?le d'accès pour protéger l'accès aux classes, variables, méthodes et constructeurs. Java prend en charge 4 droits d'accès différents.

  • default (c'est-à-dire par défaut, n'écrivez rien) : Visible dans le même package, aucun modificateur n'est utilisé. Utiliser des objets : classes, interfaces, variables, méthodes.

  • private (Privé)?: Visible dans la même catégorie. Utiliser des objets : variables, méthodes. Remarque : Les classes (classes externes) ne peuvent pas être modifiées

  • public : Visible par toutes les classes. Objets utilisés : classes, interfaces, variables, méthodes

  • protected : Visibles par les classes et toutes les sous-classes d'un même package. Utiliser des objets : variables, méthodes. Remarque?: les classes (classes externes) ne peuvent pas être modifiées.

Nous pouvons illustrer les autorisations d'accès via le tableau suivant:

YYYYYprotected
Access Control
Modificateurs Classe actuelle Dans le même package Classes DESCENANTES (Même package) Classes DESCENTISSES (Packages différents) Autres forfaits
publicpublic Y Y Y Y Y
protected Y Y Y Y N
default Y Y Y N N
private
??Y????Y ?? ??Y????Y????N????????par défaut????Y????Y????Y????N????N????????privé?? ??Y ????N????N????N????N????????

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

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

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

實例

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

私有訪問修飾符-private

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

聲明為私有訪問類型的變量只能通過類中公共的 getter 方法被外部類訪問。

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

下面的類使用了私有訪問修飾符:

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

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

公有訪問修飾符-public

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

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

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

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

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

受保護的訪問修飾符-protected

protected 需要從以下兩個點來分析說明:

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

  • 子類與基類不在同一包中:那么在子類中,子類實例可以訪問其從基類繼承而來的 protected 方法,而不能訪問基類實例的非protected修飾的方法。

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

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

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

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

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

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

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

如果我們只想讓該方法對其所在類的子類可見,則將該方法聲明為 protected。

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

訪問控制和繼承

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

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

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

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


非訪問修飾符

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

static 修飾符,用來修飾類方法和類變量。

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

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

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

static 修飾符

  • 靜態(tài)變量:

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

  • 靜態(tài)方法:

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

對類變量和方法的訪問可以直接使用?classname.variablename?和?classname.methodname?的方式訪問。

如下例所示,static修飾符用來創(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");
???}
}

以上實例運行編輯結(jié)果如下:

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

final 修飾符

final 變量:

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

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

實例

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

final 方法

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

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

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

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

final 類

final 類不能被繼承,沒有類能夠繼承 final 類的任何特性。

實例

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

abstract 修飾符

抽象類:

抽象類不能用來實例化對象,聲明抽象類的唯一目的是為了將來對該類進行擴充。

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

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

實例

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

抽象方法

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

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

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

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

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

實例

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

synchronized 修飾符

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

實例

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

transient 修飾符

序列化的對象包含被 transient 修飾的實例變量時,java 虛擬機(JVM)跳過該特定的變量。

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

實例

public?transient?int?limit?=?55;???//?不會持久化
public?int?b;?//?持久化

volatile 修飾符

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

一個 volatile 對象引用可能是 null。

實例

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

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

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

更多相關(guān)知識,請訪問常見問題欄目!

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefa?on, veuillez contacter admin@php.cn

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Tutoriel PHP
1502
276
Comment gérer les transactions en Java avec JDBC? Comment gérer les transactions en Java avec JDBC? Aug 02, 2025 pm 12:29 PM

Pour gérer correctement les transactions JDBC, vous devez d'abord désactiver le mode de validation automatique, puis effectuer plusieurs opérations, et enfin vous engager ou randonner en fonction des résultats; 1. Appelez Conn.SetAutoCommit (false) pour démarrer la transaction; 2. Exécuter plusieurs opérations SQL, telles que l'insertion et la mise à jour; 3. Appelez Conn.Commit () Si toutes les opérations sont réussies, et appelez Conn.Rollback () Si une exception se produit pour garantir la cohérence des données; Dans le même temps, les ressources TRY-With doivent être utilisées pour gérer les ressources, gérer correctement les exceptions et cl?turer les connexions pour éviter la fuite de connexion; De plus, il est recommandé d'utiliser des pools de connexion et de définir des points de sauvegarde pour réaliser un retour en arrière partiel, et de maintenir les transactions aussi courtes que possible pour améliorer les performances.

Comment travailler avec le calendrier à Java? Comment travailler avec le calendrier à Java? Aug 02, 2025 am 02:38 AM

Utilisez des classes dans le package Java.Time pour remplacer les anciennes classes de date et de calendrier; 2. Obtenez la date et l'heure actuelles via LocalDate, LocalDateTime et Localtime; 3. Créez une date et une heure spécifiques en utilisant la méthode OF (); 4. Utilisez la méthode plus / moins pour augmenter et diminuer le temps; 5. Utilisez ZonedDateTime et ZoneID pour traiter le fuseau horaire; 6. Format et cha?nes de date d'analyse via DateTimeFormatter; 7. Utilisez instantanément pour être compatible avec les anciens types de dates si nécessaire; Le traitement des dattes dans le Java moderne devrait donner la priorité à l'utilisation de Java.timeapi, qui fournit clairement, immuable et linéaire

Comparaison des frameworks Java: Spring Boot vs Quarkus vs MicronAut Comparaison des frameworks Java: Spring Boot vs Quarkus vs MicronAut Aug 04, 2025 pm 12:48 PM

Pré-formancetartuptimemoryusage, quarkusandmicronautleadduetocompile-timeprocessingandgraalvsupport, withquarkusofperforming lightbetterine scénarios.

Comprendre les ports du réseau et les pare-feu Comprendre les ports du réseau et les pare-feu Aug 01, 2025 am 06:40 AM

NetworkportsandfirewallsworkTogeTherToenable Communication whileSenSurringSecurity.1.networkportsAreVirtualEndpointsNumberred0–65535, Withwell-connuportslike80 (HTTP), 443 (HTTPS), 22 (SSH), et 25 (SMTP)

Comment fonctionne la collection Garbage en Java? Comment fonctionne la collection Garbage en Java? Aug 02, 2025 pm 01:55 PM

La collecte des ordures de Java (GC) est un mécanisme qui gère automatiquement la mémoire, ce qui réduit le risque de fuite de mémoire en récupérant des objets inaccessibles. 1. GC juge l'accessibilité de l'objet de l'objet racine (tel que les variables de pile, les threads actifs, les champs statiques, etc.), et les objets inaccessibles sont marqués comme des ordures. 2. Sur la base de l'algorithme de compensation de marque, marquez tous les objets accessibles et effacez des objets non marqués. 3. Adopter une stratégie de collecte générationnelle: la nouvelle génération (Eden, S0, S1) exécute fréquemment MinorGC; Les personnes agées fonctionnent moins, mais prend plus de temps pour effectuer MajorGC; Metaspace Stores Metadata de classe. 4. JVM fournit une variété de périphériques GC: SerialGC convient aux petites applications; Le parallelGC améliore le débit; CMS réduit

Utilisation de types HTML ?Entrée? pour les données utilisateur Utilisation de types HTML ?Entrée? pour les données utilisateur Aug 03, 2025 am 11:07 AM

Le choix du bon type HTMLinput peut améliorer la précision des données, améliorer l'expérience utilisateur et améliorer la convivialité. 1. Sélectionnez les types d'entrée correspondants en fonction du type de données, tels que le texte, le courrier électronique, le tel, le numéro et la date, qui peuvent vérifier automatiquement la somme de la somme et l'adaptation au clavier; 2. Utilisez HTML5 pour ajouter de nouveaux types tels que l'URL, la couleur, la plage et la recherche, qui peuvent fournir une méthode d'interaction plus intuitive; 3. Utilisez l'espace réservé et les attributs requis pour améliorer l'efficacité et la précision du remplissage des formulaires, mais il convient de noter que l'espace réservé ne peut pas remplacer l'étiquette.

Comparaison des outils de construction Java: Maven vs Gradle Comparaison des outils de construction Java: Maven vs Gradle Aug 03, 2025 pm 01:36 PM

GradleisthebetterChoiceFormostNewProjectsDuetOtsSuperiorflexibility, Performance et ModerNtoolingSupport.1.gradle’sgroovy / kotlindslismoreConcis

passer par l'exemple de déclaration de différence expliquée passer par l'exemple de déclaration de différence expliquée Aug 02, 2025 am 06:26 AM

Le report est utilisé pour effectuer des opérations spécifiées avant le retour de la fonction, telles que les ressources de nettoyage; Les paramètres sont évalués immédiatement lorsqu'ils sont reportés et les fonctions sont exécutées dans l'ordre de la dernière entrée (LIFO); 1. Plusieurs éleveurs sont exécutés dans l'ordre inverse des déclarations; 2. Communément utilisé pour le nettoyage sécurisé tel que la fermeture des fichiers; 3. La valeur de retour nommée peut être modifiée; 4. Il sera exécuté même si la panique se produit, adaptée à la récupération; 5. éviter l'abus de report dans les boucles pour éviter la fuite des ressources; Une utilisation correcte peut améliorer la sécurité et la lisibilité du code.

See all articles