package com.statickeyword;執行結果public
class staff
staff(int id,string name)
void printcountry()
二、靜態成員函式
a)只可訪問靜態成員變數
public
static
void main(string args)
b)無法訪問非靜態成員變數
如果修改靜態成員函式,使其訪問非靜態成員變數
static說明:1)由於在呼叫靜態成員方法時,並不會將物件的引用傳遞過去,因此不能訪問物件的非靜態成員變數void setcountryandprint(string _country)
靜態成員方法訪問方式:
「類名.靜態方法」
2)而且由於靜態成員方法通常以「類名.靜態方法」的形式訪問,如果可以訪問「非靜態成員變數」,那麼
編譯器也就無法確定:訪問的「非靜態成員變數」是屬於哪個物件,在記憶體中的位置,甚至根本就還沒有物件,
為避免這種情況的出現,編譯器一定不會允許「靜態成員方法」訪問「非靜態成員變數」
三、靜態成員變數
靜態成員變數:
位於「資料區」,無論多少個物件該變數在記憶體中都只有乙份
非靜態成員變數:
位於「堆空間」,每new乙個物件建立乙份,因此有多少個物件該變數在記憶體就有多少份
a)靜態成員方法訪問
顯然可以訪問,同【二(a)】,略
b)非靜態成員函式訪問
靜態成員函式與靜態成員變數
此文針對於初學者或者對這一部分掌握不太清楚的人。首先靜態成員函式的宣告 static void setname qstring name 需要在函式的宣告前加static關鍵字。定義的時候和普通成員函式一樣,不需要加static,但是靜態成員函式只能訪問靜態成員變數和靜態成源函式。class dem...
靜態成員函式與靜態成員變數
這篇介紹了靜態成員函式與靜態成員變數,是我的讀書筆記,我希望它夠簡短但又比較全面,起到複習的作用。如果有一些c 知識記不清楚了,它可以幫你很快回憶起來。1 加在區域性變數的前面使之成為靜態區域性變數,作用域還是在函式內部,可是生存週期延長了。2 加在全域性變數的前面限定該變數作用域為檔案作用域,就是...
靜態成員函式 靜態成員變數
靜態的成員函式,同靜態資料成員類似,它也是屬於類,而不是屬於某乙個物件的。靜態成員函式不能訪問非靜態的資料成員,它只能訪問靜態資料成員,也只能呼叫其它的靜態成員函式。原因是 當前物件的位址 this 是被隱含地傳遞到被呼叫的函式的。但乙個靜態成員函式沒有 this 指標,所以它無法訪問非靜態的成員函...