對於Java靜態內部類的理解


之前一直在微軟.Net平台下開發,在C#中是不能實例化的,而且它的所有成員都要是靜態的。我們一般把靜態類用作工具類,不需要實例化,直接使用它的屬性與方法,整個域中靜態類是唯一的

開始用Java后發現Java的靜態類一般使用在某個類的內容,簡稱靜態內部類。而且這種類可以像非靜態類一樣包含各種非靜態成員,同時可以實例化。直接顛覆了我對靜態類的認知。

下面我對Java的靜態內部類和非靜態內部類進行對比:

public class outClass {
    public static class innerClass{
        public innerClass(){
            System.out.println("innerClass");
        }
    }
    public static void main(String[] args) 
    { 
        //outClass a = new outClass();
        innerClass b = new innerClass();
        innerClass c = new innerClass();
        
    }
    
}
public class outClass {
    public class innerClass{
        public innerClass(){
            System.out.println("innerClass");
        }
    }
    public static void main(String[] args) 
    { 
        outClass a = new outClass();
        innerClass b = a.new innerClass();
        innerClass c = a.new innerClass();
        
    }
    
}

總結:

通過代碼我們發現,非靜態內部類是附屬在外部類對象上的,需要先實例化一個外部類的對象,通過外部類對象才能實例化非靜態內部類;而靜態內部類可以看做是直接附屬在外部類上的,這個靜態代表附屬體是外部類,而不是外部類實例;外部類在進程中是唯一的,而靜態內部類不需要唯一,可以生成多個實例。


免責聲明!

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



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