Java中private關(guān)鍵字詳細(xì)用法實(shí)例以及解釋
一、為什么要使用private
? 出于 安全性考慮,我們?cè)趯懽侄螘r(shí),盡量考慮采用 封裝,這樣可以隱藏類的細(xì)節(jié),只對(duì)外開(kāi)放接口即可實(shí)現(xiàn)對(duì)象之間的交互。
二、private關(guān)鍵字的定義
private是 一個(gè)訪問(wèn)限定修飾符
可修飾的的范圍:
修飾成員變量:
表示當(dāng)前成員變量只能在當(dāng)前類中使用修飾成員方法:
表示當(dāng)前成員方法只能在當(dāng)前類中使用
附:訪問(wèn)限定修飾符圖表
三、private代碼的實(shí)例
修飾成員變量時(shí):
class Person { private String name = "張三"; int age = 18; } class Student extends Person { public String gender; } public class Test { //private關(guān)鍵字測(cè)試 public static void main(String[] args) { Person person = new Person(); Person p = new Student(); //編譯均無(wú)法通過(guò),因?yàn)镾tring name 屬性被 private修飾 System.out.println(person.name); System.out.println(p.name); }
如下:
那么如何讓其他類使用到private的成員變量呢?
? 我們可以創(chuàng)建一個(gè) public 方法,在方法里 僅return 被private修飾的變量;
? 這里我們用getName() 方法來(lái)傳遞name的值;
class Person { private String name = "張三"; int age = 18; //用來(lái)傳遞private修飾的name的值 public String getName() { return name; } } public class Test { //private關(guān)鍵字測(cè)試 public static void main(String[] args) { Person person = new Person(); System.out.println(person.getName()); }
? 同理,如果我們想對(duì)private修飾的變量進(jìn)行賦值,可以建立一個(gè)setName()方法;
class Person { private String name = "張三"; int age = 18; //用來(lái)傳遞private修飾的name的值 public String getName() { return name; } //用來(lái)修改private修飾的name的值 public void setName(String name) { this.name = name; } } public class Test { //private關(guān)鍵字測(cè)試 public static void main(String[] args) { Person person = new Person(); System.out.println("修改之前:" + person.getName()); person.setName("李四"); System.out.println("修改之后:" +person.getName()); } }
運(yùn)行結(jié)果如圖:
注: 如果你使用的集成開(kāi)發(fā)環(huán)境是IDEA,那么可以使用快捷鍵快速創(chuàng)建 Getter and setter函數(shù)
如果點(diǎn)擊 Getter and Setter,編譯器會(huì)自動(dòng)創(chuàng)建好上述兩個(gè)方法;
如果只想創(chuàng)建Getter 或 是Setter方法,只用點(diǎn)擊上面的 Getter 或者是 Setter就可以了。
補(bǔ)充:用簡(jiǎn)單的實(shí)踐代碼操作講解
0、為什么封裝函數(shù)?
(為了更靈活方便運(yùn)用代碼,將封裝好的函數(shù)另存一個(gè)java文件,寫程序的時(shí)候?qū)懞?jiǎn)短的代碼調(diào)用封裝函數(shù),可以避免由于程序過(guò)多,不好整理代碼,也可以減少在繁瑣的代碼中尋找錯(cuò)誤和修改程序)
廢話少說(shuō),回歸正題:
1、用private封裝好需要的函數(shù):
public class 練習(xí)封裝函數(shù) { private String name;//封裝一個(gè)姓名的函數(shù) private String sex;//封裝性別函數(shù) private int number;//封裝學(xué)生的學(xué)號(hào)函數(shù) private double score;//封裝學(xué)生的成績(jī)函數(shù) }
2、封裝好函數(shù)后,訪問(wèn)被封裝好的函數(shù)屬性內(nèi)容,就要用到Setter和Getter方法來(lái)實(shí)現(xiàn),(即給封裝的各個(gè)函數(shù)進(jìn)行初始化設(shè)置)
- Setter方法:對(duì)屬性內(nèi)容進(jìn)行定義和賦值;
- Getter方法:讀取屬性內(nèi)容信息。
(一個(gè)一個(gè)寫有些繁瑣,如果是eclipse軟件,可用快捷鍵shift+alt+s彈出窗口選 生成setter和getter方法,把封裝的所有函數(shù)打上勾生成即可)(代碼下面都有相關(guān)注釋)
public void setName(String name) { this.name = name; } public String getName() { return name; } public String setSex() { this.sex; } public String getSex() { return sex; } public int setNumber() { this.number; } public int getNumber() { return number; } public double setScore() { this.score; } public double getScore() { return score; }
【注】getter方法必須有返回值return,setter和getter方法中的數(shù)據(jù)類型必須與封裝函數(shù)的類型保持一致!
3、封裝好的函數(shù)setter和getter初始化完成后,給程序定義一個(gè)輸出函數(shù):
public void show() { System.out.println("姓名:"+name+"\n"+"性別:"+sex+"\n"+"學(xué)號(hào):"+number+"\n"+"成績(jī):"+score); }
然后在同一包里面新建JAVA類,在class塊里面輸入調(diào)用函數(shù)的代碼:
public static void main(String[] args) { 練習(xí)封裝函數(shù) s1 = new 練習(xí)封裝函數(shù)(); s1.setName("小明"); s1.setSex("男"); s1.setNumber(202002039) s1.setScore(99); s1.show();//調(diào)用上面寫好的輸出函數(shù) }
顯示結(jié)果為:
姓名:小明
性別:男
學(xué)號(hào):202002039
成績(jī):99
總結(jié)
到此這篇關(guān)于Java中private關(guān)鍵字詳細(xì)用法實(shí)例以及解釋的文章就介紹到這了,更多相關(guān)Java private關(guān)鍵字用法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Struts中使用validate()輸入校驗(yàn)方法詳解
這篇文章主要介紹了Struts中使用validate()輸入校驗(yàn)方法,本文介紹的非常詳細(xì),具有參考借鑒價(jià)值,感興趣的朋友一起看看吧2016-09-09mybatis-plus查詢無(wú)數(shù)據(jù)問(wèn)題及解決
這篇文章主要介紹了mybatis-plus查詢無(wú)數(shù)據(jù)問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12Java通過(guò)JNI調(diào)用C++動(dòng)態(tài)庫(kù)的完整流程詳解
JNI(Java Native Interface),是實(shí)現(xiàn)Java/Kotlin與C/C++語(yǔ)言之間交互的橋梁,本文主要為大家介紹了Java通過(guò)JNI調(diào)用C++動(dòng)態(tài)庫(kù)的完整流程,需要的可以參考下2025-04-04Java之Swagger配置掃描接口以及開(kāi)關(guān)案例講解
這篇文章主要介紹了Java之Swagger配置掃描接口以及開(kāi)關(guān)案例講解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-08MapStruct @Mapping注解之處理映射中的Null值方式
這篇文章主要介紹了MapStruct @Mapping注解之處理映射中的Null值方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-03-03java中創(chuàng)建寫入文件的6種方式詳解與源碼實(shí)例
這篇文章主要介紹了java中創(chuàng)建寫入文件的6種方式詳解與源碼實(shí)例,Files.newBufferedWriter(Java 8),Files.write(Java 7 推薦),PrintWriter,File.createNewFile,FileOutputStream.write(byte[] b) 管道流,需要的朋友可以參考下2022-12-12