隨堂筆記160316內部類

一、內部類

1.代碼:

class Person{
    private String name;

    class Heart{
        public void jump(){
            System.out.println("心臟在跳動");
        }
    }
}

2.創建內部類實例:

class Person{
    private String name;

    class Heart{
        public void jump(){
            System.out.println(name + "心臟在跳動");
        }
    }

    public Heart getHeart(){
    //第一種創建內部類對象的方法
        return new Heart();
    }
}   

class Test{
    public static void main(String[] args){
        Person.Heart inner = new Person().getHeart();//通過第一種方式獲取

        Person p = new Person();
        Person.Heart = new p.Heart();
    }
}

總結

  1. 內部類可以訪問外部類的私有屬性
  2. 內部類可以體現包含關係

二、靜態內部類

1.代碼:

class Outer{
    static class Inner{
        public void test(){
            System.out.pintln("這是測試");
        }
    }
}

2.靜態內部類實例化:

class Test{
    public static void main(String[] args){
        new Outer.Inner().test();//訪問了內部類的test()方法
    }
}

靜態內部類只能訪問靜態屬性

三、方法裏的內部類

1.代碼:

class Outer{
    public void test(final int age){
        class Inner{
            public void innerTest(){
                System.out.println(age);
            }
        }
        new Inner().innerTest();
    }
}

class Test{
    public static void main(String[] args){
        new Outer().test();
    }
}

總結:

  1. 不可能從外部去調用方法中的內部類,只能通過在方法裏調用這個方法裏的內部類
  2. 內部類接收外部類方法的形參時必須定義爲final,但是在jdk1.7以後就可以不用寫final

四、匿名內部類

1.代碼:

interface AA{
    void test();
}

Class Test{
    public static void main(String[] args){
        new AA(){
            public void test(){
                System.out.println("我在測試匿名內部類");
            }
        }.test();
    }
}

總結:

  1. 定義匿名內部類需要一個接口
  2. 一般匿名內部類只用一次,用的時候就去實現接口,靈活

包裝類

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