Java:內部類
阿新 • • 發佈:2021-01-19
內部類:在Java中,一個類中可以再定義一個類,前者稱為外部類,後者稱為內部類。分為成員內部類、靜態內部類、區域性內部類、匿名內部類。一般用在定義它的類或語句塊之內,在外部引用它時必須給出完整的名稱,可以訪問外部類的私有化資料。
1、成員內部類 :
-
可以看做是成員變數
-
成員內部類中不能有靜態宣告
-
成員內部類中可以直接訪問外部類所有的屬性
public class OuterClass{//外部類
private static String s1 = "A";//外部類的靜態變數
private String s2 = "B";//外部類成員變數
class InnerClass {//內部類
// 成員內部類不能有靜態宣告
// static int x = 2;
// public static void m1(){ }
//可以宣告非靜態屬性
public void m2(){
// 可以直接訪問外部類的所有屬性
System.out.println(s1); //訪問外部靜態
System.out.println(s2);//訪問外部成員
}
}
public static void main(String[] args) {
// 建立外部類物件
OuterClass oc = new OuterClass();
// 通過外部類物件去建立成員內部類物件
//因為是成員內部類,需要用外部類的物件來建立
InnerClass ic = oc.new InnerClass();
//內部類物件呼叫自己的方法
ic.m2();
}
}
2、靜態內部類
-
可以看做靜態變數
-
靜態內部類中,不能直接訪問成員資料,需要有物件才行
-
靜態內部類中可以宣告所有東西
public class OuterClass {
private static String s1 = "A";//外部靜態變數
private String s2 = "B";//外部成員
// 靜態內部類
private static class InnerClass{
//內部類靜態方法
public static void m1(){
System.out.println(s1);//可以訪問外部靜態屬性
// 不能直接訪問成員屬性
// System.out.println(s2);
// 成員屬性需要用外部類物件呼叫
OuterClass_02 s = new OuterClass_02();
System.out.println(s.s2);
}
//內部類成員方法
public void m2(){
System.out.println(s1);
// 不能直接訪問成員屬性
// System.out.println(s2);
// 成員屬性需要用外部類物件呼叫
OuterClass_02 s = new OuterClass_02();
System.out.println(s.s2);
}
}
public static void main(String[] args) {
// 訪問內部類靜態屬性:外部類.內部類.靜態
OuterClass.InnerClass.m1();
// 訪問當前類的靜態屬性的時候,類名可以省略(外部類)
InnerClass.m1();//省略外部類名OuterClass
InnerClass ic = new OuterClass.InnerClass();
InnerClass ic1 = new InnerClass();//省略外部類名OuterClass
ic.m2();
}
}