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

目錄
Java 修飾符
默認(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 修飾符
首頁(yè) Java Java基礎(chǔ) java中private是什麼意思

java中private是什麼意思

Nov 24, 2022 pm 06:27 PM
java private

在java中,private的意思為“私有的”,是一種存取控制修飾符,用於修飾類別、屬性和方法。用private修飾的類別成員,只能被該類別本身的方法存取和修改,而不能被任何其他類別(包括該類別的子類別)存取和引用;因此??,private修飾符具有最高的保護(hù)等級(jí)。

java中private是什麼意思

本教學(xué)操作環(huán)境:windows7系統(tǒng)、java8版、DELL G3電腦。

Java 修飾符

Java語(yǔ)言提供了許多修飾符,主要分為以下兩類:

    ##存取修飾符
  • 非存取修飾符
修飾符用來(lái)定義類別、方法或變量,通常放在語(yǔ)句的最前端。我們透過(guò)下面的範(fàn)例來(lái)說(shuō)明:

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

存取控制修飾符

Java中,可以使用存取控制符來(lái)保護(hù)對(duì)類別、變數(shù)、方法和構(gòu)造方法的存取。 Java 支援 4 種不同的存取權(quán)限。

  • default?(即默認(rèn),什麼也不寫): 在同一包內(nèi)可見,不使用任何修飾符。使用物件:類別、介面、變數(shù)、方法。

  • private?(私有的): 在相同類別內(nèi)可見。使用物件:變數(shù)、方法。?注意:不能修飾類別(外部類別)

  • #public?: 對(duì)所有類別可見。使用物件:類別、介面、變數(shù)、方法

  • protected?: 對(duì)同一套件內(nèi)的類別和所有子類別可見。使用物件:變數(shù)、方法。?注意:不能修飾類別(外部類別)。

我們可以透過(guò)以下表格來(lái)說(shuō)明存取權(quán)限:

存取控制## 修飾符publicprotecteddefaultprivate#

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

使用默認(rèn)訪問(wèn)修飾符聲明的變量和方法,對(duì)同一個(gè)包內(nèi)的類是可見的。接口里的變量都隱式聲明為?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)修飾符,子類重寫了父類的 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ì)其所在類的子類可見,則將該方法聲明為 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 方法可以被子類繼承,但是不能被子類重寫。

聲明 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)制線程將變化值回寫到共享內(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 開啟的線程),在另一個(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)常見問(wèn)題欄目!

目前類別 同一包內(nèi) 子孫類別(同一套件) 子孫類別(不同套件) 其他套件
Y Y #Y Y Y
Y #Y Y Y N
Y Y # N N
#Y N #N N N

以上是java中private是什麼意思的詳細(xì)內(nèi)容。更多資訊請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願(yuàn)投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請(qǐng)聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強(qiáng)大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺(jué)化網(wǎng)頁(yè)開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)程式碼編輯軟體(SublimeText3)

熱門話題

Laravel 教程
1601
29
PHP教程
1502
276
如何使用JDBC處理Java的交易? 如何使用JDBC處理Java的交易? Aug 02, 2025 pm 12:29 PM

要正確處理JDBC事務(wù),必須先關(guān)閉自動(dòng)提交模式,再執(zhí)行多個(gè)操作,最後根據(jù)結(jié)果提交或回滾;1.調(diào)用conn.setAutoCommit(false)以開始事務(wù);2.執(zhí)行多個(gè)SQL操作,如INSERT和UPDATE;3.若所有操作成功則調(diào)用conn.commit(),若發(fā)生異常則調(diào)用conn.rollback()確保數(shù)據(jù)一致性;同時(shí)應(yīng)使用try-with-resources管理資源,妥善處理異常並關(guān)閉連接,避免連接洩漏;此外建議使用連接池、設(shè)置保存點(diǎn)實(shí)現(xiàn)部分回滾,並保持事務(wù)盡可能短以提升性能。

了解Java虛擬機(jī)(JVM)內(nèi)部 了解Java虛擬機(jī)(JVM)內(nèi)部 Aug 01, 2025 am 06:31 AM

TheJVMenablesJava’s"writeonce,runanywhere"capabilitybyexecutingbytecodethroughfourmaincomponents:1.TheClassLoaderSubsystemloads,links,andinitializes.classfilesusingbootstrap,extension,andapplicationclassloaders,ensuringsecureandlazyclassloa

如何使用Java的日曆? 如何使用Java的日曆? Aug 02, 2025 am 02:38 AM

使用java.time包中的類替代舊的Date和Calendar類;2.通過(guò)LocalDate、LocalDateTime和LocalTime獲取當(dāng)前日期時(shí)間;3.使用of()方法創(chuàng)建特定日期時(shí)間;4.利用plus/minus方法不可變地增減時(shí)間;5.使用ZonedDateTime和ZoneId處理時(shí)區(qū);6.通過(guò)DateTimeFormatter格式化和解析日期字符串;7.必要時(shí)通過(guò)Instant與舊日期類型兼容;現(xiàn)代Java中日期處理應(yīng)優(yōu)先使用java.timeAPI,它提供了清晰、不可變且線

比較Java框架:Spring Boot vs Quarkus vs Micronaut 比較Java框架:Spring Boot vs Quarkus vs Micronaut Aug 04, 2025 pm 12:48 PM

前形式攝取,quarkusandmicronautleaddueTocile timeProcessingandGraalvSupport,withquarkusoftenpernperforminglightbetterine nosserless notelless centarios.2。

了解網(wǎng)絡(luò)端口和防火牆 了解網(wǎng)絡(luò)端口和防火牆 Aug 01, 2025 am 06:40 AM

NetworkPortSandFireWallsworkTogetHertoEnableCommunication whereSeringSecurity.1.NetWorkPortSareVirtualendPointSnumbered0-655 35,with-Well-with-Newonportslike80(HTTP),443(https),22(SSH)和25(smtp)sindiessingspefificservices.2.portsoperateervertcp(可靠,c

垃圾收集如何在Java工作? 垃圾收集如何在Java工作? Aug 02, 2025 pm 01:55 PM

Java的垃圾回收(GC)是自動(dòng)管理內(nèi)存的機(jī)制,通過(guò)回收不可達(dá)對(duì)象釋放堆內(nèi)存,減少內(nèi)存洩漏風(fēng)險(xiǎn)。 1.GC從根對(duì)象(如棧變量、活動(dòng)線程、靜態(tài)字段等)出發(fā)判斷對(duì)象可達(dá)性,無(wú)法到達(dá)的對(duì)像被標(biāo)記為垃圾。 2.基於標(biāo)記-清除算法,標(biāo)記所有可達(dá)對(duì)象,清除未標(biāo)記對(duì)象。 3.採(cǎi)用分代收集策略:新生代(Eden、S0、S1)頻繁執(zhí)行MinorGC;老年代執(zhí)行較少但耗時(shí)較長(zhǎng)的MajorGC;Metaspace存儲(chǔ)類元數(shù)據(jù)。 4.JVM提供多種GC器:SerialGC適用於小型應(yīng)用;ParallelGC提升吞吐量;CMS降

比較Java構(gòu)建工具:Maven vs. Gradle 比較Java構(gòu)建工具:Maven vs. Gradle Aug 03, 2025 pm 01:36 PM

Gradleisthebetterchoiceformostnewprojectsduetoitssuperiorflexibility,performance,andmoderntoolingsupport.1.Gradle’sGroovy/KotlinDSLismoreconciseandexpressivethanMaven’sverboseXML.2.GradleoutperformsMaveninbuildspeedwithincrementalcompilation,buildcac

以身作則,解釋說(shuō)明 以身作則,解釋說(shuō)明 Aug 02, 2025 am 06:26 AM

defer用於在函數(shù)返回前執(zhí)行指定操作,如清理資源;參數(shù)在defer時(shí)立即求值,函數(shù)按後進(jìn)先出(LIFO)順序執(zhí)行;1.多個(gè)defer按聲明逆序執(zhí)行;2.常用於文件關(guān)閉等安全清理;3.可修改命名返回值;4.即使發(fā)生panic也會(huì)執(zhí)行,適合用於recover;5.避免在循環(huán)中濫用defer,防止資源洩漏;正確使用可提升代碼安全性和可讀性。

See all articles