什么是靜態(tài) 靜態(tài)方法和非靜態(tài)方法的區(qū)別是什么?
靜態(tài)方法和非靜態(tài)方法的區(qū)別是什么?沒有此項的靜態(tài)方法不能引用非靜態(tài)變量或方法,而只能引用其自身方法體中定義的成員和參數(shù)。子類不允許重寫靜態(tài)方法,但子類可以重寫父類的靜態(tài)方法。子類不能將父類中的非靜態(tài)方
靜態(tài)方法和非靜態(tài)方法的區(qū)別是什么?
沒有此項的靜態(tài)方法不能引用非靜態(tài)變量或方法,而只能引用其自身方法體中定義的成員和參數(shù)。子類不允許重寫靜態(tài)方法,但子類可以重寫父類的靜態(tài)方法。子類不能將父類中的非靜態(tài)方法重寫為靜態(tài)方法。主要方法也是靜態(tài)方法。要在main方法中訪問類的成員變量和方法,需要在方法體中創(chuàng)建class對象
靜態(tài)方法和非靜態(tài)方法的區(qū)別總結(jié)如下:
1。靜態(tài)方法屬于一個類,可以在類實例化之前使用;
2。非靜態(tài)方法可以訪問類的任何成員,而靜態(tài)方法只能訪問類的靜態(tài)成員;
3。因為靜態(tài)方法可以在類實例化之前使用,而類中的非靜態(tài)變量只能在類實例化之后使用分配內(nèi)存;
4。靜態(tài)變量和其他靜態(tài)方法只能出現(xiàn)在靜態(tài)方法中,而this和其他關(guān)鍵字不能在靜態(tài)方法中使用,因為它屬于整個類;
5。靜態(tài)方法比實例化更有效。靜態(tài)方法的缺點是它們不會自動銷毀,但是實例化的方法可以銷毀;
靜態(tài)方法和非靜態(tài)方法的區(qū)別是什么?
非靜態(tài)成員也被稱為成員變量。兩者的區(qū)別如下:1。成員變量之間的名稱差異也稱為實例變量;靜態(tài)變量也稱為類變量。2內(nèi)存存儲的區(qū)別在于成員變量存儲在堆內(nèi)存的對象中,靜態(tài)變量存儲在方法區(qū)的靜態(tài)區(qū)域中。三。生命周期的不同成員變量隨著對象的出現(xiàn)而出現(xiàn),隨著對象的消失而消失。靜態(tài)變量隨著類的出現(xiàn)而出現(xiàn),隨著類的消失而消失。靜態(tài)數(shù)據(jù)成員與普通數(shù)據(jù)成員的區(qū)別在于:(1)普通數(shù)據(jù)成員屬于類的特定對象。只有在創(chuàng)建對象時,才能為普通數(shù)據(jù)成員分配內(nèi)存。靜態(tài)數(shù)據(jù)成員屬于整個類,即使沒有創(chuàng)建對象,該類的靜態(tài)數(shù)據(jù)成員變量也存在。(2) 因為類的靜態(tài)數(shù)據(jù)成員的存在不依賴于任何類對象的存在,所以類的靜態(tài)數(shù)據(jù)成員應該在代碼中顯式初始化,通常在類之外,例如上面的示例。在c11標準中,我們可以在const integer類型的類中為靜態(tài)成員提供初始值,但是要求靜態(tài)成員必須是literal constant類型的constexpr(來自C primer中文版,第270頁)。
靜態(tài)成員和非靜態(tài)成員的區(qū)別?
靜態(tài)類和非靜態(tài)類的主要區(qū)別:主要區(qū)別是靜態(tài)類不能實例化,靜態(tài)類編譯器可以檢查實例成員是否意外添加,C#編譯器會自動將其標記為sealed,靜態(tài)類中不能創(chuàng)建非靜態(tài)方法,即,在靜態(tài)方法中只能創(chuàng)建靜態(tài)方法,但在非靜態(tài)類中可以調(diào)用靜態(tài)方法。靜態(tài)類的主要功能:
1:只包含靜態(tài)成員。
2:無法實例化。
3:它是密封的。
4:不能包含實例構(gòu)造函數(shù)。
5:非靜態(tài)類可以包含靜態(tài)方法、字段、屬性或事件;
6:靜態(tài)方法和屬性不能訪問其包含類型中的非靜態(tài)字段和事件。7:靜態(tài)方法只能重載,但不能重寫,因為靜態(tài)方法不屬于類的實例成員。8:C#不支持靜態(tài)局部變量(靜態(tài)變量在方法中定義)。非靜態(tài)類在使用時必須實例化,并且每次使用時都必須實例化。一般來說,諸如logclass、configclass等靜態(tài)類可以用于經(jīng)常使用的類。
靜態(tài)類和非靜態(tài)類的區(qū)別?
在創(chuàng)建對象之前可以使用靜態(tài)方法。必須通過新對象調(diào)用非靜態(tài)方法。
例如:
public class per{
public static string GetType(){
return “human”]}
]public string getname(){
return “Zhang San”]}
在沒有新對象之前,可以這樣使用上述類中的GetType方法:
string type=每種類型()//類型=“人類”
但是getname方法不能這樣使用,編譯也不會通過
getname必須是這樣:
per P=new per()
string name=P.getname()//name=“Zhang San”
當然,GetType方法也可以通過object調(diào)用:
string Type=p.GetType()//Type=“human”
總之:
靜態(tài)方法在創(chuàng)建實例之前存在,而非靜態(tài)方法在創(chuàng)建對象之后存在。
靜態(tài)方法和非靜態(tài)方法的區(qū)別?
非靜態(tài)成員也稱為成員變量。它們之間的區(qū)別如下:
1。成員變量也稱為實例變量;靜態(tài)變量也稱為類變量。
2. 內(nèi)存存儲的區(qū)別在于成員變量存儲在堆內(nèi)存的對象中,靜態(tài)變量存儲在方法區(qū)的靜態(tài)區(qū)域中。
3. 不同的生命周期