靜態(tài)方法與非靜態(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)方法。要在主方法中訪問類的成員變量和方法,需要在方法體中創(chuàng)建該類的對象
在創(chuàng)建對象之前可以使用靜態(tài)方法,必須通過新對象調用非靜態(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調用:
string Type=p.GetType()//Type=“human”
總之:
靜態(tài)方法在創(chuàng)建實例之前存在,而非靜態(tài)方法在創(chuàng)建對象之后存在。
靜態(tài)方法和非靜態(tài)方法的區(qū)別?
靜態(tài)方法和非靜態(tài)方法之間的區(qū)別總結如下:
1。靜態(tài)方法屬于一個類,可以在類實例化之前使用;
2。非靜態(tài)方法可以訪問類的任何成員,而靜態(tài)方法只能訪問類的靜態(tài)成員;
3。因為靜態(tài)方法可以在類實例化之前使用,而類中的非靜態(tài)變量只能在類實例化之后使用分配內存;
4。靜態(tài)變量和其他靜態(tài)方法只能出現(xiàn)在靜態(tài)方法中,而this和其他關鍵字不能在靜態(tài)方法中使用,因為它屬于整個類;
5。靜態(tài)方法比實例化更有效。靜態(tài)方法的缺點是它們不會自動銷毀,但是實例化的方法可以銷毀;
6。靜態(tài)方法和靜態(tài)變量在創(chuàng)建后總是使用相同的內存塊進行銷毀,而使用實例創(chuàng)建多個內存。主要區(qū)別:靜態(tài)方法可以在創(chuàng)建對象之前使用,非靜態(tài)方法必須通過新對象調用。例如:在沒有新對象之前,publicclassper{publicstaticstringgettype(){return“human”}publicstringgetname(){return“Zhang San”}的上述類中的GetType方法可以這樣使用:stringtype=每種類型()//type=“human”,但getname方法不能以這種方式使用。編譯不會通過。Getname必須是這樣的:perp=newper()stringname=p.Getname()//Na當然,GetType方法也可以通過對象調用:stringtype=p.GetType()//type=“human”]~]。
。