Dot-Net
為什麼靜態類只能有靜態成員?
正如標題所示,我想了解為什麼靜態類只能有靜態成員。我希望它在所有程式語言中都是一樣的。所以我相信所有語言的解釋都是一樣的。
靜態類無法實例化,因此它不會有任何實例,非靜態成員將需要其類的實例才能訪問。由於靜態類不能有任何實例,因此您無法訪問非靜態成員(如果有的話)。
因此靜態類只能有靜態成員
這不是一個設計決定,而是一個合乎邏輯的決定。最簡單的起點是查看概念的相關定義:
**靜態類是無法實例化的類。**這意味著您不能創建屬於該類類型的對象。
**非靜態成員與類的特定實例相關聯。**它們包含專門與該類類型的單個對象相關聯的數據。
因此,如果靜態類包含非靜態成員,您將永遠無法訪問該數據或呼叫該方法,因為您永遠無法實例化該靜態類類型的對象。相反,您必須擁有可以直接從類的靜態實例呼叫的所有靜態成員。
但是,您可以擁有包含靜態成員的非靜態類。這樣,您可以訪問數據或呼叫作為靜態成員公開的方法,而無需實例化該類的對象。但是,您也可以實例化該類類型的對象並訪問非靜態(或實例)成員。例如,如果你有一個類
Circle,你可以有靜態成員,比如CalculateArea函式和PI欄位。這些成員通常適用於所有圈子,只是因為它們是圈子。但是您也可以擁有與該類的特定實例相關聯的非靜態成員,因為它們描述了特定的圓形對象。這些可能是欄位Diameter和Circumference. 考慮到儲存在該特定實例的非靜態欄位中的數據,您還可以使用非靜態函式來計算圓的面積。