Java的內部類


Java的內部類

內部類:在一個類的內部,再定義一個類。

eg:A類中定義一個B類,B類就是A類的內部類,A類就是B類的外部類

分為:

  1. 成員內部類

  2. 靜態內部類

  3. 局部內部類

  4. 匿名內部類

成員內部類

在類的內部寫一個類,這個內部類可以訪問其對應的外部類的私有和公有屬性和方法

創建內部類對象語法:

step1: 外部類名 obj1 = new 外部類名();

step2: 外部類名.內部類名 obj2 = obj1.new 內部類名();

 

1、main():

package com.WZ.Demo.Application;
public class Application {
   public static void main(String[] args) {
       //創建內部類對象
       //step1 外部類名 obj1 = new 外部類名();
       Outer obj1 = new Outer();
       //step2 外部類名.內部類名 obj2 = obj1.new 內部類名();
       Outer.Inner obj2 = obj1.new Inner();
       obj1.out();
       obj2.in();
       obj2.getID();
  }
}

2、Outer類

package com.WZ.Demo.Application;
public class Outer {
   private int id = 3;
   public void out(){
       System.out.println("這個是外部類的方法");
  }
   public class Inner{
       public void in(){
           System.out.println("這個是內部類的方法");
      }
       //測試是否能獲得外部類的私有屬性
       public void getID(){
           System.out.println("外部類的私有屬性: "+id);
      }
  }
}

靜態內部類

在剛剛成員內部類的基礎上,public class Inner{ }上,加static關鍵字修飾。

與成員內部類的區別為:

  1. 內部類無法使用外部類的非靜態成員。原因為:static加載時就有了,而外部類的非靜態變量此時還不存在。

  2. 內部類依然可以使用外部類的靜態成員。

除上述區別外,靜態內部類與成員內部類相同。

局部內部類

外部類的方法中,寫的類,叫局部內部類。

package com.WZ.Demo.Application;
public class Outer {
  public void method{
      class Inner{
           public void in(){}
      }
  }
}

匿名內部類

實例化對象的時候,不把名字賦值給變量,而是直接使用。語法為:new 類名.方法名();

1、main()

package com.WZ.Demo.Application;
public class Application {
   public static void main(String[] args) {
       new Person().show();  //匿名內部類
  }
}

2、Person類

package com.WZ.Demo.Application;
public class Person {
   public void show() {
       System.out.println("匿名內部類");
  }
}

 

 

 

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM