靜態(tài)方法在什么情況下使用 非靜態(tài)方法可以調(diào)用靜態(tài)方法與變量嗎?
非靜態(tài)方法可以調(diào)用靜態(tài)方法與變量嗎?原因很簡(jiǎn)單,因?yàn)殪o態(tài)方法可以直接使用而無需實(shí)例化。但非靜態(tài)方法只能在實(shí)例的幫助下使用。如果在靜態(tài)方法中使用非靜態(tài)變量,則不能直接使用“無實(shí)例化”變量。矛盾。靜態(tài)方法
非靜態(tài)方法可以調(diào)用靜態(tài)方法與變量嗎?
原因很簡(jiǎn)單,因?yàn)殪o態(tài)方法可以直接使用而無需實(shí)例化。但非靜態(tài)方法只能在實(shí)例的幫助下使用。如果在靜態(tài)方法中使用非靜態(tài)變量,則不能直接使用“無實(shí)例化”變量。矛盾。
靜態(tài)方法和非靜態(tài)方法的區(qū)別?
在創(chuàng)建對(duì)象之前可以使用靜態(tài)方法。必須通過新對(duì)象調(diào)用非靜態(tài)方法。
例如:
public class per{
public static string GetType(){
return “human”]}
]public string getname(){
return “Zhang San”]}
在沒有新對(duì)象之前,可以這樣使用上述類中的GetType方法:
string type=每種類型()//類型=“人類”
但是getname方法不能這樣使用,編譯也不會(huì)通過
getname必須是這樣:
per P=new per()
string name=P.getname()//name=“Zhang San”
當(dāng)然,GetType方法也可以通過object調(diào)用:
string Type=p.GetType()//Type=“human”
總之:
靜態(tài)方法在創(chuàng)建實(shí)例之前存在,而非靜態(tài)方法在創(chuàng)建對(duì)象之后存在。
靜態(tài)方法可以通過對(duì)象調(diào)用非靜態(tài)方法嗎?
不能直接調(diào)用,但可以間接調(diào)用??梢詫?duì)象的引用傳遞到靜態(tài)方法中,然后調(diào)用對(duì)象的非靜態(tài)方法。靜態(tài)方法使用傳入的對(duì)象引用調(diào)用非靜態(tài)方法,因此靜態(tài)方法調(diào)用非靜態(tài)方法。