1. 程式人生 > 其它 >Java:內部類

Java:內部類

內部類:在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(); } }