1. 什么是JAVA中的封裝
面向對象的三大特性:封裝粪糙、繼承萤衰、多態(tài)、
- 封裝
- 概念:將類的某些信息隱藏在類內部脆栋,不允許外部程序直接訪問洒擦,而是通過該類提供的方法來實現對隱藏信息的操作和訪問。
- 好處:
只能通過規(guī)定的方法訪問數據
隱藏類的實例細節(jié)熟嫩,方便修改和實現 - 封閉的實現步驟
修改屬性的可見性(高為private) -> 創(chuàng)建getter/setter方法(用于屬性的讀寫) -> 在getter/setter方法中加入屬性控制語句(對屬性值的合法性進行判斷)
2.使用包管理java中的類
3. java中的訪問修飾符
訪問修飾符:可以修飾屬性和方法的訪問范圍
訪問修飾符 | 本類 | 同包 | 子類 | 其他 |
---|---|---|---|---|
private | √ | |||
默認 | √ | √ | ||
protected | √ | √ | √ | |
public | √ | √ | √ | √ |
JAVA中的this關鍵字
- this 關鍵字代表當前對象
this.屬性 操作當前對象的屬性
this.方法,調用當前對象的方法 - 封裝對象屬性的時候椅邓,經常會用
4. 什么是Java的內部類
- 概念:定義在另外類里面的類昧狮,與之對應,包含內部類的類稱為外部類
- 作用:
- 提供了更好的封裝逗鸣,可以把內部類隱藏在外部類之內,不允許同一個包中的其它類訪問透葛。
- 內部類的方法可以訪問外部類的所有數據卿樱,包括私有數據
- 內部類所實現的功能使用外部類同樣可以實現,只是有時使用內部類更方便
- 種類:
- 成員內部類
- 靜態(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修飾勺良,特點是:
- 靜態(tài)內部類不能直接訪問外部類的非靜態(tài)成員骄噪,但可以通過new外部類().成員的方式訪問
- 如果外部類的靜態(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修飾符