Java四種內部類

靜態內部類

定義在內部的靜態類,有static關鍵字,就是靜態內部類。

public class Outter {
    private static int a;
    private String b;

    public static class Inner{
        public void println(){
            System.out.println(a);
        }
    }
}
  1. 靜態內部類可以訪問外部類所有的靜態變量和方法,即使是 private 的也一樣。
  2. 靜態內部類和一般類一致,可以定義靜態變量、方法,構造方法等。
  3. 其它類使用靜態內部類需要使用“外部類.靜態內部類”方式,如下所示:Outter.Inner inner =
    new Outter.Inner();inner.print();

成員內部類

定義在類內部的非靜態類,沒有static關鍵字,就是成員內部類。類中不能定義靜態方法與變量。類初始化的時候先初始化靜態成員,如果允許成員內部類定義靜態變量,那麼成員內部類的靜態變量初始化順序是有歧義的。

public class Outter {
    private static int a;
    private String b;

    public  class Inner{
        public void println(){
            System.out.println(a);
            System.out.println(b);
        }
    }
}

局部內部類

定義在方法裏面的類,就是局部類。如下的示例代碼:

public class Outter {
    private static int a;
    private String b;

   public void println(final String name){
       
       class Inner{
           public void test(){
               System.out.println(a);
               System.out.println(b);
               System.out.println(name);
           }
       }
   }
}

匿名內部類

匿名內部類我們必須要繼承一個父類或者實現一個接口,當然也僅能只繼承一個父類或者實現一個接口。同時它也是沒有 class 關鍵字,這是因爲匿名內部類是直接使用 new 來生成一個對象的引用。

public abstract class Player {
    //運動員名稱
    private String mName;

    public String getName() {
        return mName;
    }

    public void setName(String name) {
        this.mName = name;
    }
    //可以跑多少米
    public abstract int run();
}
public class Test {

    public void test(Player player){
        System.out.println(player.getName() + "能夠跑" + player.run() + "米");
    }
    public static void main(String[] args) {
        new Test().test(new Player() {
            public int run() {
                return 10000;
            }
            public String getName() {
                return "博爾特";
            }
        });
    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章