靜態成員方法與靜態成員變數

2021-07-05 02:53:26 字數 816 閱讀 4878

package com.statickeyword;

public

class staff

staff(int id,string name)

void printcountry()

二、靜態成員函式

a)只可訪問靜態成員變數

public

static

void main(string args)

執行結果

b)無法訪問非靜態成員變數

如果修改靜態成員函式,使其訪問非靜態成員變數

static

void setcountryandprint(string _country)

說明:1)由於在呼叫靜態成員方法時,並不會將物件的引用傳遞過去,因此不能訪問物件的非靜態成員變數

靜態成員方法訪問方式:

「類名.靜態方法」

2)而且由於靜態成員方法通常以「類名.靜態方法」的形式訪問,如果可以訪問「非靜態成員變數」,那麼

編譯器也就無法確定:訪問的「非靜態成員變數」是屬於哪個物件,在記憶體中的位置,甚至根本就還沒有物件,

為避免這種情況的出現,編譯器一定不會允許「靜態成員方法」訪問「非靜態成員變數」

三、靜態成員變數

靜態成員變數:   

位於「資料區」,無論多少個物件該變數在記憶體中都只有乙份

非靜態成員變數:

位於「堆空間」,每new乙個物件建立乙份,因此有多少個物件該變數在記憶體就有多少份

a)靜態成員方法訪問

顯然可以訪問,同【二(a)】,略

b)非靜態成員函式訪問

靜態成員函式與靜態成員變數

此文針對於初學者或者對這一部分掌握不太清楚的人。首先靜態成員函式的宣告 static void setname qstring name 需要在函式的宣告前加static關鍵字。定義的時候和普通成員函式一樣,不需要加static,但是靜態成員函式只能訪問靜態成員變數和靜態成源函式。class dem...

靜態成員函式與靜態成員變數

這篇介紹了靜態成員函式與靜態成員變數,是我的讀書筆記,我希望它夠簡短但又比較全面,起到複習的作用。如果有一些c 知識記不清楚了,它可以幫你很快回憶起來。1 加在區域性變數的前面使之成為靜態區域性變數,作用域還是在函式內部,可是生存週期延長了。2 加在全域性變數的前面限定該變數作用域為檔案作用域,就是...

靜態成員函式 靜態成員變數

靜態的成員函式,同靜態資料成員類似,它也是屬於類,而不是屬於某乙個物件的。靜態成員函式不能訪問非靜態的資料成員,它只能訪問靜態資料成員,也只能呼叫其它的靜態成員函式。原因是 當前物件的位址 this 是被隱含地傳遞到被呼叫的函式的。但乙個靜態成員函式沒有 this 指標,所以它無法訪問非靜態的成員函...