詳解JAVA的封裝
第一節(jié) 什么是JAVA中的封裝
面向?qū)ο蟮娜筇匦裕?strong>封裝、繼承、多態(tài)。
1.概念:將類的某些信息隱藏在類的內(nèi)部,不允許外部程序直接訪問,而是通過該類提供的方法,來實(shí)現(xiàn)對(duì)隱藏信息的操作和訪問。
2.好處:
a只能通過規(guī)定的方法訪問數(shù)據(jù)
b隱藏類的實(shí)例細(xì)節(jié),方便修改和實(shí)現(xiàn)
3.封裝的實(shí)現(xiàn)步驟
修改屬性的可見性,改為設(shè)為private;創(chuàng)建getter/setter方法,用于屬性的讀寫,創(chuàng)建一個(gè)特定的方法,一般是gettersetter方法,可以在gettersetter方法中加入屬性控制語句,對(duì)屬性值的合法性進(jìn)行判斷,舉例來說:
public float getScreen(){
return screen;
}
public void setScreen(float screen){
this.screen=screen;
}
第二節(jié) 使用包管理JAVA中的類
封裝的類名可能沖突,用包可以解決
1.包的作用,管理Java文件夾,管理同名文件沖突
2.定義包,package關(guān)鍵字
3.系統(tǒng)中的包
java.(功能).(類)
java.lang.類 包含java語言基礎(chǔ)的類
java.util.類 包含java與語言中的各種工具類
java.io.類 包含輸入輸出相關(guān)功能類
4.包的使用
import 使用關(guān)鍵字可以在某個(gè)文件中使用其他文件中的類,全部都是小寫
import com.imooc.music.Myclass;
import com.*是包下所有的類
第三節(jié) JAVA中的訪問修飾符
修飾我們屬性和方法的訪問范圍
private 本類
默認(rèn) 本類 同包
protected 本類 同包 子類
public 本類 同包 子類 其他
第四節(jié) JAVA中的this關(guān)鍵字
1.this關(guān)鍵字代表當(dāng)前對(duì)象,this.屬性代表當(dāng)前對(duì)象的屬性,this.方法代表當(dāng)前對(duì)象的方法
2.封裝對(duì)象屬性的時(shí)候經(jīng)常會(huì)用到this關(guān)鍵字,例如this.a=a;
第五節(jié) 什么是JAVA中的內(nèi)部類
1.什么是內(nèi)部類:
內(nèi)部類是定義在另一個(gè)類里面,與之對(duì)應(yīng),包含內(nèi)部類的類被稱為外部類。
2.為什么要將一個(gè)類定義在另一個(gè)類里,清清爽爽獨(dú)立不好嗎?
內(nèi)部類的主要作用是:
內(nèi)部類提供了更好的封裝,可以把內(nèi)部類隱藏在外部類之內(nèi),不允許同一個(gè)包中其他類訪問該類。
內(nèi)部類中的方法可以直接訪問外部類的所有數(shù)據(jù),包括私有數(shù)據(jù)
內(nèi)部類所實(shí)現(xiàn)的功能使用外部類同樣可以實(shí)現(xiàn),是有時(shí)使用內(nèi)部類會(huì)更加方便。
3.內(nèi)部類有幾種:
成員內(nèi)部類;靜態(tài)內(nèi)部類;方法內(nèi)部類和匿名內(nèi)部類
內(nèi)部類其實(shí)也是外部類的一個(gè)成員,只不過這個(gè)成員類型是一個(gè)類,調(diào)用時(shí)要先實(shí)現(xiàn)外部類,然后才能找到該類下的內(nèi)部類實(shí)現(xiàn)。例:
public class HelloWorld{
public class Inner{
方法show();
}
main函數(shù){
HelloWorld h=new HelloWorld();
Inner i=h.new Inner();
i show;
}
}
定義了成員內(nèi)部類后,必須使用外部類對(duì)象來創(chuàng)建內(nèi)部類對(duì)象,而不能直接去new一個(gè)內(nèi)部類對(duì)象,也就是:內(nèi)部類 對(duì)象名=外部類對(duì)象.new 內(nèi)部類();
第六節(jié) JAVA中的成員內(nèi)部類
內(nèi)部類中最常見的也就是成員內(nèi)部類,即普通內(nèi)部類。
成員內(nèi)部類的使用方法:
1.內(nèi)部類定義在外部類的內(nèi)部,相當(dāng)于外部類的一個(gè)成員變量的位置,內(nèi)部類可以使用任意訪問修飾符,如public private protected等
2.內(nèi)部類中定義的方法,可以訪問外部類中的數(shù)據(jù),而不受訪問修飾符的影響
3.定義了成員內(nèi)部類后,必須使用外部類對(duì)象來創(chuàng)建內(nèi)部類對(duì)象,而不能直接去new一個(gè)內(nèi)部類對(duì)象,也就是:內(nèi)部類 對(duì)象名=外部類對(duì)象.new 內(nèi)部類();
4.編譯含內(nèi)部類的程序時(shí),會(huì)出現(xiàn)兩個(gè)class文件,其中第二個(gè)是外部類的.class文件,第一個(gè)是內(nèi)部類.class文件,成員內(nèi)部類的class文件總是這樣,外部類名$內(nèi)部類名.class 這是內(nèi)部類.class名字

注意:
a.外部類不能直接使用內(nèi)部類的成員和方法,可以先創(chuàng)建內(nèi)部類對(duì)象,然后通過它們的對(duì)象來訪問其成員變量和方法;
b.如內(nèi)部類和外部類具有相同的成員變量和方法,內(nèi)部類默認(rèn)訪問自己的成員變量或方法。如果要訪問外部類的成員變量,可以使用this關(guān)鍵字,外部類.this.屬性。如:

第七節(jié) JAVA中的靜態(tài)內(nèi)部類
靜態(tài)內(nèi)部類是static修飾的內(nèi)部類,這種內(nèi)部類的特點(diǎn)是:
1、靜態(tài)內(nèi)部類不能直接訪問外部類的非靜態(tài)成員,但可以通過 new 外部類().成員 的方式訪問
2、 如果外部類的靜態(tài)成員與內(nèi)部類的成員名稱相同,可通過“類名.靜態(tài)成員”訪問外部類的靜態(tài)成員;如果外部類的靜態(tài)成員與內(nèi)部類的成員名稱不相同,則可通過“成員名”直接調(diào)用外部類的靜態(tài)成員
3、 創(chuàng)建靜態(tài)內(nèi)部類的對(duì)象時(shí),不需要外部類的對(duì)象,可以直接創(chuàng)建 內(nèi)部類 對(duì)象名= new 內(nèi)部類();

運(yùn)行結(jié)果,訪問外部類中的b:1
訪問內(nèi)部類中的b:2
第八節(jié) JAVA中的方法內(nèi)部類
方法內(nèi)部類就是內(nèi)部類定義在外部類的方法中,方法內(nèi)部類只在該方法的內(nèi)部可見,即只在該方法內(nèi)可以使用。

注意:由于方法內(nèi)部類不能在外部類的方法以外的地方使用,因此方法內(nèi)部類不能使用訪問控制符和 static 修飾符。
希望本文所述可以對(duì)需要的朋友有些幫助
相關(guān)文章
java實(shí)現(xiàn)excel和txt文件互轉(zhuǎn)
本篇文章主要介紹了java實(shí)現(xiàn)excel和txt文件互轉(zhuǎn)的相關(guān)知識(shí)。具有很好的參考價(jià)值。下面跟著小編一起來看下吧2017-04-04
通過Mybatis實(shí)現(xiàn)單表內(nèi)一對(duì)多的數(shù)據(jù)展示示例代碼
最近做項(xiàng)目遇到這樣的需求要求將表中的數(shù)據(jù),按照一級(jí)二級(jí)分類返回給前端json數(shù)據(jù),下面通過本文給大家分享通過Mybatis實(shí)現(xiàn)單表內(nèi)一對(duì)多的數(shù)據(jù)展示示例代碼,感興趣的朋友參考下吧2017-08-08
使用Thrift實(shí)現(xiàn)跨語言RPC的調(diào)用
Thrift最大的優(yōu)勢(shì)就是可以實(shí)現(xiàn)跨語言RPC調(diào)用,尤其在一些大廠,微服務(wù)各模塊之間使用不同的語言是很常見的,本文就將使用java作為服務(wù)端,用python作為客戶端,實(shí)現(xiàn)不同語言之間的RPC調(diào)用,需要的可以參考下2023-10-10
Java使用Apache compress實(shí)現(xiàn)文件夾壓縮成Zip包
Apache common提供了很多實(shí)用的工具包,這篇文章主要來和大家介紹一下Java如何使用Apache compress包實(shí)現(xiàn)文件夾壓縮成Zip包,希望對(duì)大家有所幫助2024-01-01
Spring?IoC容器Bean作用域的singleton與prototype使用配置
這篇文章主要為大家介紹了Spring?IoC容器Bean作用域的singleton與prototype使用配置詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-12-12
maven無法自動(dòng)導(dǎo)入依賴jar包解決方式
有時(shí)候Maven無法自動(dòng)導(dǎo)入包是因?yàn)樵摪聪螺d到本地倉庫中,本文就來介紹一下解決方法,具有一定的參考價(jià)值,感興趣的可以了解一下2024-08-08
一文詳解Java中的反射與new創(chuàng)建對(duì)象
Java中的反射(Reflection)和使用new關(guān)鍵字創(chuàng)建對(duì)象是兩種不同的對(duì)象創(chuàng)建方式,各有優(yōu)缺點(diǎn)和適用場(chǎng)景,本文小編給大家詳細(xì)介紹了Java中的反射與new創(chuàng)建對(duì)象,感興趣的小伙伴跟著小編一起來看看吧2024-07-07
java8 stream自定義分組求和并排序的實(shí)現(xiàn)
這篇文章主要介紹了java8 stream自定義分組求和并排序的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01
Java JDK動(dòng)態(tài)代理實(shí)現(xiàn)原理實(shí)例解析
這篇文章主要介紹了Java JDK動(dòng)態(tài)代理實(shí)現(xiàn)原理實(shí)例解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06

