2013-02-25 58 views
0

我想通過子類識別對父類成員的調用。 這可能嗎? 對於如:如何識別對父函數的對象調用

public class base1 
{ 
    public void getvalue() 
    { 
    } 
} 

public class B:base1 
{ 
} 

public class C:base1 
{ 
} 

public static void main() 
{ 

    B objb=new B(); 
    C objc=new C(); 

    objb.getvalue();//this should display B 
    objc.getvalue();//this should display C 

} 

我們如何修改的GetValue()相應的? //不使用重載的概念

+1

的解決方案是使用多態性(「覆蓋」)。你能解釋爲什麼你明確要求解決方案「不使用壓倒一切的概念」,而這正是你應該做的事情嗎? – 2013-02-25 19:19:24

+0

我想知道我們是否可以識別孩子對父母成員的電話號碼。那就是 – Anjana 2013-02-25 19:20:47

+0

呃......可能是允許第三方實現他們自己的子類,並且不能作弊(讓他們的D返回'A'),但是你真的應該直接檢查他們的類型,而不是他們的「名字」,因爲這可能會被騙。編輯:根據你的評論Anjana,仍然不知道你想做什麼;你的意思是確定來自家長的電話,而不是_to_? – 2013-02-25 19:22:02

回答

4

您可以使用反射來做到這一點:

string type = objb.GetType().Name; //will be "B" 
+0

從我的閱讀中,OP希望在'getvalue'方法中實現,而不是在callsite上,不是? – 2013-02-25 19:20:24

+0

@KirkWoll從我的閱讀中,他認爲他需要這種方法才能做到這一點,而事實並非如此。在任何情況下,您都可以在實現基類方法時使用'GetType',它將在運行時返回實例的實際類型,而不是用於定義方法的類型。 – Servy 2013-02-25 19:21:36

+0

對,好點。 – 2013-02-25 19:22:21