---------------------- android培訓 、java培訓 、期待與您交流! ----------------------
內部類 :在一個類中建立的類
內不類訪問規則:
1 內部類可以直接訪問外部類中的成員,包括私有。是因爲內部類中有一個外部類的引用:格式 外部類名.this
2 外部類訪問內部類需要創立內部類對象
3 外部其他類要直接訪問內部類的成員,需創立內部類對象。格式 外部類名字.內部類名字 變量名 = 外部類對象.內部類對象;
4 當內部類在成員位置上,就可以被成員修飾符修飾 比如 private static。 當被static修飾後,只能直接訪問外部類中的靜態成員
注意:
1 當內部類中定義了靜態成員,該內部類必須是靜態的。
2 當外部類中的靜態方法訪問內部類的成員時,內部類也必須是靜態的
3 局部內部類不可以被成員修飾符修飾,不能定義靜態成員
4 局部內部類可以直接訪問外部類中的成員,但是不可以訪問它所在的局部中的變量,只能訪問被final修飾的局部變量
當描述事物時。事物的內部還有事物,該事物用內部類來描述。因爲內部事物在使用外部事物的內容。例如 人體和心臟。
匿名內部類:
1 沒有名字的內部類
2 定義匿名內部類的前提: 內部類必須繼承一個類或實現接口
3 匿名內部類格式: new父類或接口(){定義子類的內容}。
4 匿名內部類其實就是一個匿名 的子類對象
5 匿名內部類中的方法最好不要超過3個
實例
public class Outer {
public final static int i = 5;
// 成員內部類
class Inner {
int k = i;
public void innerShow() {
// 直接訪問外部類成員
System.out.println(k);
}
}
// 當內部類中有靜態成員 內部類必須定義爲靜態
static class Inner3 {
static int y;
}
// 外部類訪問內部類需要創建內部類對象
Inner in = new Inner();
public void add() {
System.out.println(in.k);
in.innerShow();
}
public static void show() {
final int y = 9;
// 局部內部類
class InnerShow {
// 可以直接訪問外部類的成員
int x = i;
// 只能訪問被final修飾的局部變量
int z = y;
public void innerAdd() {
System.out.println(i);
System.out.println(z);
}
}
InnerShow is = new InnerShow();
is.innerAdd();
// 匿名內部類
new FuLei() {
public void save() {
System.out.println("匿名內部類打印");
}
}.save();
}
}
public class Test {
public static void main(String[] args) {
//其他類中直接訪問內部類
Outer.Inner oi = new Outer().new Inner();
oi.innerShow();
//Outer o = new Outer();
Outer.show();
}
}
打印結果:
5
5
9
匿名內部類打印
---------------------- android培訓 、java培訓 、期待與您交流! ----------------------