小結一下關于靜態類的重要知識點:
1、調用靜態方法的時候只能通過類名直接來調用,不能通過對象來調用。也就是說靜態成員不需要實例化對象。
2、靜態成員在整個程序推出時才才釋放資源,所以可以在整個應用程序中用到靜態成員,它相當于在共享數據。
3、靜態類的構造函數,只會在第一次使用靜態類之前調用執行,并且只會執行一次。
4、當給一個普通類添加靜態字段后,系統會默認為該類生成一個靜態構造函數。【靜態構造函數不能有訪問修飾符,并且不能夠帶參數】
5、靜態類不能被實例化,并且不能被繼承。
6、由于靜態成員在整個程序推出時才釋放資源,所以盡量避免寫靜態字段,一般只寫靜態方法。
7、靜態類和普通類中的靜態成員
(1)靜態類:一般都用作工具類,里面都是一些工具函數例如Math,Console,都是靜態類。 靜態類中只包括靜態成員。
(2)普通類中的靜態成員:只能通過類名來訪問,多個對象共享一個靜態成員。靜態方法中只能訪問靜態成員。
什么時候用靜態類?
答:一般情況下,當這個類是一個工具類,里面都是方法,為了讓用戶調用的時候方便,不需要實例化對象,可將此類直接標記為static的類,該類中只能包含靜態成員,不能包含實例成員。
什么情況下只需在一個普通類中編寫一個靜態成員,而這個類不能標記為static?
答:當這個類需要實例化的時候或者用到多態的時候(多態是必須能被繼承的,而靜態類是不能夠被繼承的)。這時如果類中的一個成員是所有對象共享的數據,這時候可以將該類中的這個成員標記為靜態的,但是該類還是一個實例類。
8、靜態方法或者靜態變量創建后始終使用同一塊內存(靜態存儲區),而使用實例方式則會創建多個內存。
9、靜態類的繼承問題:
靜態類不能被其他類繼承。
靜態類不能繼承自其他類,只能繼承自Object類。
靜態類不能使用多態(本身就不能被繼承)
sealed:密封類,不能被繼承 或 禁止子類重寫父類的方法。
10、靜態類的本質:abstract+sealde
(1)abstract:不能被實例化
(2)sealed: 不能被繼承。
新聞熱點
疑難解答