Java中的封裝性(包含this關(guān)鍵字,構(gòu)造器等)
一、封裝性的含義
封裝性的作為java面向?qū)ο笏枷氲娜筇卣髦弧?/p>
從字面上看,就是將一部分的東西整合成一個(gè)整體。
用專業(yè)的術(shù)語來講,可以理解為:隱藏對(duì)象內(nèi)部的復(fù)雜性,只對(duì)外公開簡(jiǎn)單的接口。
(通俗來講封裝性的設(shè)計(jì)思想:把該隱藏的隱藏起來,該暴露的暴露出來)
二、封裝性的作用
①提高了代碼的復(fù)用性。
②提高了代碼的安全性。(利用private訪問控制符,讓訪問權(quán)限降到最低,從而提高安全性)
③降低了代碼的復(fù)雜程度。(將復(fù)雜的內(nèi)部細(xì)節(jié)全部進(jìn)行封裝,只留下簡(jiǎn)單的接口,通過接口進(jìn)行對(duì)方法的調(diào)用。)
三、封裝性的體現(xiàn)
在了解實(shí)現(xiàn)分裝性前我們要先了解Java的四種權(quán)限修飾符。
3.1、四種權(quán)限修飾符的介紹
Java權(quán)限修飾符 public、protected、default、private 可以放置在類的成員對(duì)象定義前
4 種權(quán)限用來修飾類及類的內(nèi)部結(jié)構(gòu):屬性、方法、構(gòu)造器、內(nèi)部類 (不同權(quán)限的訪問權(quán)限如下:)
注意:class 的權(quán)限修飾只可以用public 和 default(缺?。?。
3.2、分裝性具體的實(shí)現(xiàn)
我們將類的屬性私有化(private)同時(shí),要提供公共的(public)getxxx和setxxx方法來獲取和輸出值。(示例代碼如下)
package cn.spilt_charging.contact; public class Animal { public static void main(String[] args) { animals animals = new animals(); animals.name = "小白"; //animals.age = 10; //無法直接調(diào)用(age為私有性) //animals.legs = 4; //無法直接調(diào)用(legs為私有性) animals.setAge(10); //通過權(quán)限為public的setAge()方法錄入age的值 animals.setLeg(4); //通過權(quán)限為public的setLeg()方法錄入legs的值 System.out.print("這只動(dòng)物的名字叫做:" + animals.name + ",年齡為:" + animals.getAge() + "歲," + "有" + animals.getLeg() + "條腿"); //相對(duì)應(yīng)的私有性的age和legs要分別使用getAge()、getLeg()方法輸出。 } } class animals{ String name; //動(dòng)物的名字 private int age; //動(dòng)物的年齡(私有性) private int legs; //動(dòng)物的腿的個(gè)數(shù)(私有性) public void setLeg(int legs) { //legs對(duì)應(yīng)的set方法 this.legs = legs; } public int getLeg(){ //legs對(duì)應(yīng)的get方法 return legs; } public void setAge(int age) { //age對(duì)應(yīng)的set方法 this.age = age; } public int getAge() { //age對(duì)用的get方法 return age; } }
(代碼中涉及到了Java的構(gòu)造器和this關(guān)鍵字,下面會(huì)一一進(jìn)行介紹)
四、構(gòu)造器的解釋
4.1、構(gòu)造器的作用
①創(chuàng)建對(duì)象
②初始化對(duì)象的屬性
4.2、注意事項(xiàng)
①如果沒有顯示的定義類的構(gòu)造器的話,則系統(tǒng)默認(rèn)提供一個(gè)空參的構(gòu)造器。
②定義構(gòu)造器的格式:權(quán)限修飾符 類名(形參列表){}
③一個(gè)類中定義的多個(gè)構(gòu)造器,彼此之間會(huì)構(gòu)成重載。
④一旦顯示的定義類的構(gòu)造器后,系統(tǒng)就不會(huì)再提供默認(rèn)的空參構(gòu)造器。
⑤一個(gè)類中,至少有一個(gè)構(gòu)造器。
4.3、構(gòu)造器的舉例說明
(這些都是構(gòu)造器)
public animals() { System.out.print("......."); } public animals(String name) { name = name; } public animals(String name,int age) { name = name; age = age; }
就3.2的代碼來說,下面代碼中 animals()就是構(gòu)造器
animals animals = new animals();
五、this關(guān)鍵字的使用
this 用來修飾、調(diào)用:屬性、方法、構(gòu)造器
5.1、this修飾屬性和方法
this 理解為:當(dāng)前對(duì)象 , 或當(dāng)前正在創(chuàng)建的對(duì)象。
①在類的方法中,我們可以使用 "this. 屬性 " 或 "this. 方法 " 的方式,調(diào)用當(dāng)前對(duì)象屬性或方法。通常情況下,我們都選擇省略“this.”。特殊情況下,如果方法的形參和類的屬性同名,我們必須顯式的使用 "this. 變量 " 的方式,表明此變量是屬性,而非形參。
②在類的構(gòu)造器中,我們可以使用 "this. 屬性 " 或 "this. 方法 " 的方式,調(diào)用正在創(chuàng)建的對(duì)象屬性和方法。但是,通常情況下,我們都選擇省略“this.”。特殊情況下,如果構(gòu)造器的形參和類的屬性同名,我們必須顯式的使用 "this. 變量 " 的方式,表明此變量是屬性,而非形參。
5.2、this 調(diào)用構(gòu)造器
① 我們可以在類的構(gòu)造器中,顯式的使用 " this( 形參列表 ) " 的方式,調(diào)用本類中重載的其他的構(gòu)造器!
② 構(gòu)造器中不能通過 "this ( 形參列表 ) " 的方式調(diào)用自己。
③ 如果一個(gè)類中有 n 個(gè)構(gòu)造器,則最多有 n -1 個(gè)構(gòu)造器中使用了"this ( 形參列表 )"。
④ 規(guī)定: " this( 形參列表 ) " 必須聲明在類的構(gòu)造器的首行!
⑤ 在類的一個(gè)構(gòu)造器中,最多只能聲明一個(gè) "this( 形參列表 )",用來調(diào)用其他構(gòu)造器。
5.3、this的舉例
如3.2的代碼所示:
public void setLeg(int legs) { //legs對(duì)應(yīng)的set方法 this.legs = legs; } public void setAge(int age) { //age對(duì)應(yīng)的set方法 this.age = age; }
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java后端服務(wù)間歇性響應(yīng)慢的問題排查與解決
之前在公司內(nèi)其它團(tuán)隊(duì)找到幫忙排查的一個(gè)后端服務(wù)連接超時(shí)問題,問題的表現(xiàn)是服務(wù)部署到線上后出現(xiàn)間歇性請(qǐng)求響應(yīng)非常慢(大于10s),但是后端業(yè)務(wù)分析業(yè)務(wù)日志時(shí)卻沒有發(fā)現(xiàn)慢請(qǐng)求,所以本文給大家介紹了Java后端服務(wù)間歇性響應(yīng)慢的問題排查與解決,需要的朋友可以參考下2025-03-03Java隨機(jī)數(shù)算法原理與實(shí)現(xiàn)方法實(shí)例詳解
這篇文章主要介紹了Java隨機(jī)數(shù)算法原理與實(shí)現(xiàn)方法,簡(jiǎn)單分析了隨機(jī)數(shù)算法的原理并結(jié)合具體實(shí)例形式給出了java編程計(jì)算隨機(jī)數(shù)的具體操作技巧,需要的朋友可以參考下2017-09-09Java Socket一對(duì)多通信實(shí)現(xiàn)之并發(fā)處理方式
這篇文章主要介紹了Java Socket一對(duì)多通信實(shí)現(xiàn)之并發(fā)處理方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-08-08SpringBoot項(xiàng)目中訪問HTML頁面的三種方法
這篇文章主要介紹了SpringBoot項(xiàng)目中訪問HTML頁面的三種方法,文中通過代碼示例和圖文結(jié)合的方式講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-07-07你必須得會(huì)的SpringBoot全局統(tǒng)一處理異常詳解
程序在運(yùn)行的過程中,不可避免會(huì)產(chǎn)生各種各樣的錯(cuò)誤,這個(gè)時(shí)候就需要進(jìn)行異常處理,本文主要為大家介紹了SpringBoot實(shí)現(xiàn)全局統(tǒng)一處理異常的方法,需要的可以參考一下2023-06-06Java基礎(chǔ)之引用相關(guān)知識(shí)總結(jié)
今天聊聊Java的引用,大多數(shù)時(shí)候我們說引用都是強(qiáng)引用,只有在對(duì)象不使用的情況下才會(huì)釋放內(nèi)存,其實(shí)Java 內(nèi)存有四種不同的引用.一起看看吧,,需要的朋友可以參考下2021-05-05Maven項(xiàng)目引用第三方j(luò)ar包找不到類ClassNotFoundException
這篇文章主要為大家介紹了Maven項(xiàng)目引用第三方j(luò)ar包找不到類ClassNotFoundException解決及原因分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07