1,this.屬性,this.方法,表示當前物件的屬性,當前類的方法
2,this,表示當前物件,當前正在操作這個方法的物件就是當前物件
3,使用this(引數若干),可以呼叫當前類的構造方法,如果,構造方法之間相互呼叫,則有要求:一:this()必須放在首行,二:至少有乙個構造方法是沒有呼叫this(引數若干)的,就是說構造之間不能迴圈呼叫。
不用static修飾的屬性或者方法,每個物件都有各自的屬性或方法,比如乙個person類有name,age兩個屬性,有p1,p2兩個物件,p1,p2分別有各自的兩個屬性,對應在堆記憶體中開闢空間;———–也就是說static可以用來宣告全域性屬性。
如果希望乙個屬性被所有物件所通擁有,則可以將其宣告為static的,宣告為static的屬性或方法,也成為類方法,可以直接通過類名稱直接呼叫。
class person
public
void
info()
};public
class staticdemo03
};
每乙個物件都擁有各自的堆疊空間,堆記憶體空間中儲存每個物件的各自的屬性,但是所有的static屬性是儲存在了全域性資料區之中,所有的物件指向全域性資料區中的乙個內容,所以當乙個物件修改static的全域性資料區中的內容之後,所有物件得到的全域性資料區中的內容都改變了。
上一張記憶體圖:
1,棧記憶體:儲存物件名稱,(儲存,訪問堆記憶體的位址)
2,堆記憶體:儲存每個物件的具體屬性
3,全域性資料區:儲存static型別的屬性
4,全域性**區:儲存所有方法的定義。
static的方法,不能呼叫非static的屬性或者方法,為什麼呢,因為,static的屬性或者方法,和非static的屬性或者方法,在記憶體中建立的時間是是不同的,建立的先後順序是不同的。
static的屬性或者方法,在物件宣告,建立之前就可以呼叫,因為它是通過類名稱直接呼叫的,所以,在這個類的物件建立之前呼叫,必然是ok的。
1,static屬性,在類的物件建立之前就開闢了空間了,而且它是被所有物件所共享的,那就可以在類的構造方法中,通過乙個static的屬性,用於統計,乙個類到底產生了多少個物件。
class demo
};public
class staticdemo06
};
2,可以使用static為物件進行自動的編名操作。
class demo
public
demo(string name)
public string getname()
};public
class staticdemo07
};
new關鍵字 this關鍵字 base關鍵字
使用new,所做的三件事 1.類是引用物件,引用物件是在堆中開闢空間 在堆中開闢空間 2.在開闢的堆空間中建立物件 3.呼叫物件的構建函式 4.隱藏父類成員 子類的成員可以與隱藏從父類繼承的成員,類似於重寫。public new void sayhello this關鍵字的使用 1.代表當前類的物件...
this關鍵字 static關鍵字
1.當成員變數和區域性變數重名,可以用關鍵字this來區分 this 代表物件,代表那個物件呢?當前物件 this就是所在函式所屬物件的引用 簡單說 那個物件呼叫了this所在的函式,this就代表哪個物件 this也可以用於在建構函式中呼叫其他建構函式 注意 只能定義在建構函式的第一行,因為初始化...
base關鍵字 this關鍵字
用於在派生類中實現對基類公有或者受保護成員的訪問,但是只侷限在建構函式 例項方法和例項屬性訪問器中。功能主要包括 1 呼叫基類上已被其他方法重寫的方法。2 指定建立派生類例項時應呼叫的基類建構函式。base常用於,在派生類物件初始化時和基類進行通訊。base可以訪問基類的公有成員和受保護成員,私有成...