對於Java靜態內部類的理解

來源:互聯網
上載者:User

之前一直在微軟.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();            }    }

總結:

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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.