Java中為什么main()中不能創建內部類對象?


對main方法而言,雖然寫在類中,它是游離於任何類之外的,因此某類的非靜態內部類對它而言是不直接可見的,也就無法直接訪問 。

1:非靜態內部類,必須有一個外部類的引用才能創建。

2:在外部類的非靜態方法中,因為有隱含的外部類引用this,所以可以直接創建非靜態內部類。

3:在外部類的靜態方法中,因為沒有this,所以必須先獲得外部類引用,然后創建非靜態內部類。

4:靜態內部類,不需要外部類引用就可以直接創建。

5:同時靜態的內部類,也不能直接訪問外部類的非靜態方法。

6:由此可以推測,非靜態內部類之所以可以直接訪問外部類的方法,是因為創建非靜態內部類時,有一個隱含的外部類引用被傳遞進來。

 

public class OuterClass { 


    public static void main(String[] args) { 

        OuterClass outerClass = new OuterClass(); 

        InnerClass innerClass = outerClass.new InnerClass(); 

        StaticInnerClass staticInnerClass = new StaticInnerClass(); 

    } 

    public void foo() { 

        InnerClass innerClass = new InnerClass(); 

        StaticInnerClass staticInnerClass = new StaticInnerClass(); 

    } 

    public class InnerClass { 

    } 

    public static class StaticInnerClass { 

    } 

}

 


免責聲明!

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



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