第二章 封裝

1. 什么是JAVA中的封裝

面向對象的三大特性:封裝粪糙、繼承萤衰、多態(tài)、

  1. 封裝
  • 概念:將類的某些信息隱藏在類內部脆栋,不允許外部程序直接訪問洒擦,而是通過該類提供的方法來實現對隱藏信息的操作和訪問。
  • 好處:
    只能通過規(guī)定的方法訪問數據
    隱藏類的實例細節(jié)熟嫩,方便修改和實現
  • 封閉的實現步驟
    修改屬性的可見性(高為private) -> 創(chuàng)建getter/setter方法(用于屬性的讀寫) -> 在getter/setter方法中加入屬性控制語句(對屬性值的合法性進行判斷)

2.使用包管理java中的類

3. java中的訪問修飾符

訪問修飾符:可以修飾屬性和方法的訪問范圍

訪問修飾符 本類 同包 子類 其他
private
默認
protected
public

JAVA中的this關鍵字

  1. this 關鍵字代表當前對象
    this.屬性 操作當前對象的屬性
    this.方法,調用當前對象的方法
  2. 封裝對象屬性的時候椅邓,經常會用

4. 什么是Java的內部類

  1. 概念:定義在另外類里面的類昧狮,與之對應,包含內部類的類稱為外部類
  2. 作用:
  • 提供了更好的封裝逗鸣,可以把內部類隱藏在外部類之內,不允許同一個包中的其它類訪問透葛。
  • 內部類的方法可以訪問外部類的所有數據卿樱,包括私有數據
  • 內部類所實現的功能使用外部類同樣可以實現,只是有時使用內部類更方便
  • 種類:
    • 成員內部類
    • 靜態(tài)內部類
    • 方法內部類
    • 匿名內部類

5.成員內部類

//外部類
public class outer{
private int a = 99;//外部類的私有屬性
//內部類
private class Inner{
int b = 2;//內部類的成員屬性
public void test(){
System.out.println("訪問外部類中的a:"+a);
System.out.println("訪問內部類中的b:"+b);
}
}
//調用成員內部類
public static void main(String[] args){
outer o = new Outer();//創(chuàng)建外部對象o
Inner i = new Inner();//使用外部類對象創(chuàng)建內部類對象繁调,名為i
i.test();//調用內部類對象的test方法
}
}

成員內部類的保用方法:

  • 1.Inner類定義在Outer類的內部,相當于Outer類的一個成員變量的位置门岔,Inner類可以使用任意訪問控制符烤送,public,protercted,private
  • 2.Inner類中宣言的test()方法可以直接訪問Outer類中的數據 ,面不受訪問控制符的影響,如直接訪問Outer類中的私有屬性a
  • 3.定義了成員 內部類后互艾,必須使用外部類對象來創(chuàng)建內部類對象,而不能直接newg 一個內部類對象纫普,即:內部類.對象名 = 外問類對象.new 內部類();
  • 4.編譯上面的程序后好渠,會發(fā)現產生了兩個.class文件outer$Inner.class\Outer.class。其中第二個是外部類的.class文件拳锚,第一個內部類的.class文件,即成員 內部類的.class文件總是這樣:外部類名$內部類名.class

友情提示:

  • 外部類是不能直接使用內部類的成員 和方法匾荆,可先創(chuàng)建內部類的對象杆烁,然后通過內部類的對象來訪問其成員變量和方法牙丽。
  • 如果 外部類和內部類具有相同的成員 變量和方法兔魂,內部類默認訪問自己的成員 變量或方法,如果訪問外問類的成員變量拍棕,可以用this.

6.靜態(tài)內部類

用static修飾勺良,特點是:

  1. 靜態(tài)內部類不能直接訪問外部類的非靜態(tài)成員骄噪,但可以通過new外部類().成員的方式訪問
  2. 如果外部類的靜態(tài)成員與內部類的成員名稱相同,可通過“類名.靜態(tài)成員”訪問外部類的靜態(tài)成員链蕊,如果外部類的靜態(tài)成員 與內部類的成員名稱不相同,則可通過“成員名”直接調用外部類的靜態(tài)成員
    3.創(chuàng)建靜態(tài)內部類的對象時滔韵,不需要外部類的對象,可以直接創(chuàng)建內部類 對象名 = new 內部類();

//外部類
public class SOuter{
private int a = 99;//外部類私有變量
static int b = 1;//外部類的靜態(tài)變量
//靜態(tài)內部類
public static class SInner{
int b = 2;//內部類的變量
public void test(){
System.out.println("訪問外部類中的b:"+ SOuter.b);
System.out.println("訪問內問類中的a:"+ b);
}
}
//測試靜態(tài)的內部類
public static void main(String[] args){
SInner si = new SInner();//直接創(chuàng)建內部類的對象
si.test();//調用test
}
}

7.Java 中的方法內部類

方法內部類就是內部類定義在外部類的方法中邦马,方法內部類只在該方法的內部可見,即只在該方法內可以使用

//外部類
public class MOuter{
//外部類中的方法
public void show(){
final int a = 25;常量
int b = 13;變量
//方法內部類
class MInner{
int c = 2;
public void print(){
System.out.println("訪問外部類方法中的常量a:"+a);
System.out.println("訪問內部類中變量c:"+c);
}
}
MInner mi = new MInner(String[] args){//創(chuàng)建方法內部類的對象
mi.print();//調用內部類的方法
}
//測試方法內部類
public static void main(String[] args){
MOuter mo = new MOuter();//創(chuàng)建外部類的對象
mo.show();//調用外部類的方法
}
}
}

由于內部類不能在外部類的方法以外的地方使用邻悬,因此方法內部類不能使用訪問控制符和static修飾符

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末随闽,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子掘宪,更是在濱河造成了極大的恐慌,老刑警劉巖镀首,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件栏赴,死亡現場離奇詭異,居然都是意外死亡须眷,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進店門捕传,熙熙樓的掌柜王于貴愁眉苦臉地迎上來扩劝,“玉大人,你說我怎么就攤上這事棒呛。” “怎么了簇秒?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵趋观,是天一觀的道長。 經常有香客問我皱坛,道長,這世上最難降的妖魔是什么剩辟? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮刻肄,結果婚禮上,老公的妹妹穿的比我還像新娘敏弃。我一直安慰自己,他們只是感情好绿饵,可當我...
    茶點故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布瓶颠。 她就那樣靜靜地躺著,像睡著了一般粹淋。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上桃移,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天借杰,我揣著相機與錄音过吻,去河邊找鬼蔗衡。 笑死,一個胖子當著我的面吹牛逼纸,可吹牛的內容都是我干的。 我是一名探鬼主播樊展,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼堆生,長吁一口氣:“原來是場噩夢啊……” “哼雷酪!你這毒婦竟也來了?” 一聲冷哼從身側響起哥力,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤墩弯,失蹤者是張志新(化名)和其女友劉穎寞射,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體桥温,經...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年旺韭,在試婚紗的時候發(fā)現自己被綠了掏觉。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,059評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡织盼,死狀恐怖酱塔,靈堂內的尸體忽然破棺而出沥邻,到底是詐尸還是另有隱情延旧,我是刑警寧澤,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布芦瘾,位于F島的核電站集畅,受9級特大地震影響近弟,放射性物質發(fā)生泄漏挺智。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一二鳄、第九天 我趴在偏房一處隱蔽的房頂上張望媒怯。 院中可真熱鬧订讼,春花似錦扇苞、人聲如沸寄纵。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽棍潘。三九已至,卻和暖如春蜒谤,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背鳍徽。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工阶祭, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留绷杜,地道東北人濒募。 一個月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像齿诉,于是被迫代替她去往敵國和親晌姚。 傳聞我的和親對象是個殘疾皇子粤剧,可洞房花燭夜當晚...
    茶點故事閱讀 42,792評論 2 345

推薦閱讀更多精彩內容

  • 1. Java基礎部分 基礎部分的順序:基本語法抵恋,類相關的語法,內部類的語法弧关,繼承相關的語法,異常的語法世囊,線程的語...
    子非魚_t_閱讀 31,581評論 18 399
  • Java 內部類 分四種:成員內部類窿祥、局部內部類、靜態(tài)內部類和匿名內部類壁肋。 1、成員內部類: 即作為外部類的一個成...
    ikaroskun閱讀 1,219評論 0 13
  • Advanced Language Features 知識點:一. static修飾符 static修飾符可以用來...
    風景涼閱讀 434評論 0 0
  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理猫胁,服務發(fā)現跛锌,斷路器,智...
    卡卡羅2017閱讀 134,599評論 18 139
  • CSS常用選擇器 通配符選擇器 * id選擇器(id #) 類選擇器(class .) 元素選擇器(E) 后代選...
    everfight閱讀 255評論 3 2