所謂靜態方法和靜態成員變數,是指那些用static關鍵字修飾的方法或者變數,比如我們例子中的private static string company就是乙個靜態成員變數,而public static string getcompany()和public static void setcompany(string s)都是靜態方法。
靜態的意思,是指該方法或者變數在整個類中只有乙份。我們說,類是用來建立物件的模板,就是說,我們建立物件的時候,每個物件都會有類中所宣告的成員變數的乙個副本。但是,對於靜態成員變數,在記憶體中只有乙個副本,所有的物件將共享這個副本。比如我們的例子中,所有employee所在的公司就只有乙個,所以我們沒有必要為每乙個employee的物件都保留乙個company的副本,所以我們把它宣告為靜態的成員變數。
所以,只要改變了company的值,對所有employee的物件都是起作用的。
另一方面,靜態方法只能訪問靜態成員變數,比如我們的例子中,setcompany( )只能訪問company,如果它訪問name之類的變數,編譯器將會報錯。而且靜態方法的呼叫是 類名.方法名的方式來呼叫的,也可以用一般的 物件名.方法名 的方式來呼叫。
實際上,我們先前用的system.out.println( )方法,就是乙個靜態的方法,所以我們可以直接用 類名.方法名 的方式呼叫。而乙個類裡如果有main函式都要宣告為靜態方法,因為乙個程式只能有乙個main函式入口。
所以,只要改變了
company
的值,對所有
employee
的物件都是起作用的。
另一方面,
靜態方法只能訪問靜態成員變數,
比如我們的例子中,
setcompany(
)只能訪問
company
,如果它訪問
name
之類的變數,
編譯器將會報錯。
而且靜態方法的呼叫是類名.
方法名的方式來呼叫的
,也可以用一般的
物件名.
方法名的方式來呼叫。
實際上,我們先前用的
system.out.println( )
方法,就是乙個靜態的方法,所以我們可以直接用類名
.方法名
的方式呼叫。
而乙個類裡如果有
main
函式都要宣告為靜態方法,因為乙個程式只能
有乙個main
函式入口。
靜態成員變數 和 靜態成員函式
資料成員可以分靜態變數 非靜態變數兩種.靜態成員 靜態類中的成員加入static修飾符,即是靜態成員.可以直接使用類名 靜態成員名訪問此靜態成員,因為靜態成員存在於記憶體,非靜態成員需要例項化才會分配記憶體,所以靜態成員不能訪問非靜態的成員.因為靜態成員存在於記憶體,所以非靜態成員可以直接訪問類中靜...
靜態成員變數和靜態成員函式
我們學到的類物件的成員變數一般都是這個物件專屬,不能為其他物件所共有。然而在實際程式設計中我們需要統計物件的數量等問題,所以就必須設定乙個類的物件所共有的變數,就是靜態成員變數。首先通過乙個簡單的例程 說明靜態成員如何使用。includeusing namespace std class a vir...
靜態成員變數和靜態成員函式
本章內容均為coursera中c 程式設計課件的整理 基本概念 靜態成員 在說明前面加了static關鍵字的成員。class crectangle 普通成員變數每個物件有各自的乙份,而靜態成員變數一共就乙份,為所有物件共享。sizeof 運算子不會計算靜態成員變數。class cmyclass 則 ...