Java超詳細講解三大特性之一的封裝
說到面向?qū)ο髣t不得不提面向?qū)ο蟮娜筇卣鳎悍庋b,繼承,多態(tài)。那么今天就和大家先來介紹什么是封裝。
封裝
封裝的概念
將類的某些信息隱藏在類的內(nèi)部,不允許外部程序直接訪問,而是通過該類提供的方法來對隱藏的信息進行操作和訪問。
為什么需要封裝?
當(dāng)我們創(chuàng)建一個類的對象后,我們可以通過“對象.屬性”的方式,對對象的屬性進行賦值。這里賦值操作要受到 屬性的數(shù)據(jù)類型和存儲范圍的制約。除此之外,沒有其他制約條件,但是,在實際問題中,我們往往需要給屬性賦值加入額外的限制條件。這個條件就不能在屬性聲明時體現(xiàn),我們只能通過方法進行限制性條件的添加。同時我們需要避免用戶再使用“對象.屬性”的方式對屬性進行賦值,則需要將屬性聲明為私有的(private)。
封裝的優(yōu)點:
1. 良好的封裝能夠減少耦合。
2. 類內(nèi)部的結(jié)構(gòu)可以自由修改。
3. 可以對成員變量進行更精確的控制。
4. 隱藏信息,實現(xiàn)細節(jié)。
封裝的實現(xiàn)步驟
(1)將屬性修改為private
(2)創(chuàng)建getter/setter方法,通過這兩種方法對數(shù)據(jù)進行獲取和設(shè)定,對象通過調(diào)用這兩種發(fā)方法實現(xiàn)對數(shù)據(jù)的讀寫。
class person{ private int age;//修改屬性為private public int getAge(){ return age; } public void setAge(int a){ age = a; } }
封裝 隱藏對象內(nèi)部的復(fù)雜性,只對外公開簡單的接口便于外部調(diào)用,封裝性的體現(xiàn),需要權(quán)限修飾符來配合。
Java中的包
Java中的包是為了更好的實現(xiàn)項目中類的管理,解決同名文件的沖突,提到j(luò)ava中的包那么我們就不得不提到package關(guān)鍵字,我們一般使用package聲明類或接口所屬的包,聲明在源文件的首行,比如 package java.lang,每 . 一次就代表一層文件目錄,同一個包下不能命名同名的接口,類,不同的包可以,對于包的使用則需要使用import關(guān)鍵字,在源文件中顯示的使用import結(jié)構(gòu)導(dǎo)入指定包下的類,接口,通常import聲明在包的聲明和類的聲明之間,java中,包的名字規(guī)范是全小寫的字母拼寫
java中類的成員-構(gòu)造器
任何一個類都有構(gòu)造器,用來創(chuàng)建對象和初始化對象的屬性,創(chuàng)建類的對象的方法:new+構(gòu)造器,如 Person p = new Person();
如果沒有顯式的定義類的構(gòu)造器的話,則系統(tǒng)默認(rèn)提供一個空參的構(gòu)造器
定義構(gòu)造器的格式
權(quán)限修飾符 類名 (形參列表){}
總結(jié):屬性賦值的先后順序:
1默認(rèn)初始化
2顯式初始化
3構(gòu)造器中初始化
4通過“對象.方法”或“對象.屬性”的方法,賦值
java中的this關(guān)鍵字
this關(guān)鍵字可以用來修飾:屬性,方法構(gòu)造器,this理解為:當(dāng)前對象 或當(dāng)前正在創(chuàng)建的對象
在類的方法中,我們可以使用“this.屬性”或“this.方法”的方式,調(diào)用 當(dāng)前對象屬性或方法。但是通常情況下,我們都選擇省略“this.”。特殊情況下,如果方法的形參和類的屬性同名時,我們必須顯示的使用“this.變量”的方式,表面此變量為屬性。
在類的構(gòu)造器也是一樣,調(diào)用一個空參的構(gòu)造器:this();調(diào)用有參數(shù)的 比如 public Person (int age) 就可以用 this(age)來進行調(diào)用,但是構(gòu)造器中不能自己調(diào)用自己只能調(diào)用其他的構(gòu)造器,如果有n個構(gòu)造器,那么只有n-1個構(gòu)造器可以使用this這樣的方式來調(diào)用,且構(gòu)造器this調(diào)用必須聲明在構(gòu)造器的首行,this也可以用來進行對象之間的比較大小。
public class Boy { private int age; public int getAge() { return age; } public void setAge(int a) { age = a; } public void compare(Boy boy) { if (this.age > boy.age) { System.out.println("YES"); } else if (this.age < boy.age) { System.out.println("No"); } } }
總結(jié)
今天介紹了封裝的概念,構(gòu)造器,以及package,import 和 this關(guān)鍵字,希望大家喜歡。
到此這篇關(guān)于Java超詳細講解三大特性之一的封裝的文章就介紹到這了,更多相關(guān)Java封裝內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Spring Boot 通過AOP和自定義注解實現(xiàn)權(quán)限控制的方法
這篇文章主要介紹了Spring Boot 通過AOP和自定義注解實現(xiàn)權(quán)限控制,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11springcloud引入spring-cloud-starter-openfeign失敗的解決
這篇文章主要介紹了springcloud?引入spring-cloud-starter-openfeign失敗的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-03-03