類的內部成員之五:內部類(Person.Bird bird = p.new Bird();)

/*
* 類的內部成員之五:內部類
* 1. Java中容許將一個類A聲明在另外一個類B中,則類A就是內部類,類B稱爲外部類
*
* 2.內部類的分類:成員內部類(靜態、非靜態) vs 局部內部類(方法內、代碼塊內、構造器內)
*
* 3.成員內部類:
* 一方面,做爲外部類的成員:
* >調用外部類的結構
* >能夠被static修飾
* >能夠被4種不一樣的權限修飾
*
* 另外一方面,做爲一個類:
* > 類內能夠定義屬性、方法、構造器等
* > 能夠被final修飾,表示此類不能被繼承。言外之意,不使用final,就能夠被繼承
* > 能夠被abstract修飾
*
*
* 4.關注以下的3個問題
* 4.1 如何實例化成員內部類的對象
* 4.2 如何在成員內部類中區分調用外部類的結構
* 4.3 開發中局部內部類的使用 見《InnerClassTest1.java》
* */java

public class InnerClassTest {
    public static void main(String[] args) {
        
        //建立Dog實例(靜態的成員內部類):
        Person.Dog dog = new Person.Dog();
        dog.show();
        //建立Bird實例(非靜態的成員內部類):
//        Person.Bird bird = new Person.Bird();//錯誤的
        Person p = new Person();
        Person.Bird bird = p.new Bird();
        bird.sing();
        
        System.out.println();
        
        bird.display("黃鸝");
        
    }
}


class Person{
    
    String name = "小明";
    int age;
    
    public void eat(){
        System.out.println("人:吃飯");
    }
    
    
    //靜態成員內部類
    static class Dog{
        String name;
        int age;
        
        public void show(){
            System.out.println("卡拉是條狗");
//            eat();
        }
        
    }
    //非靜態成員內部類
    class Bird{
        String name = "杜鵑";
        
        public Bird(){
            
        }
        
        public void sing(){
            System.out.println("我是一隻小小鳥");
            Person.this.eat();//調用外部類的非靜態屬性
            eat();
            System.out.println(age);
        }
        
        public void display(String name){
            System.out.println(name);//方法的形參
            System.out.println(this.name);//內部類的屬性
            System.out.println(Person.this.name);//外部類的屬性
        }
    }
    
    
    public void method(){
        //局部內部類
        class AA{
            
        }
    }
    
    {
        //局部內部類
        class BB{  
            
        }
    }
    
    public Person(){
        //局部內部類
        class CC{
            
        }
    }
    
    
    
}
相關文章
相關標籤/搜索