這讓我感到困惑,請將我的行爲暴露給我?c#隱藏混淆
只有在新成員的範圍內,新成員的聲明隱藏了繼承成員。 複印
**class Base
{
public static void F() {}
}
class Derived: Base
{
new private static void F() {} // Hides Base.F in Derived only
}
class MoreDerived: Derived
{
static void G() { F(); } // Invokes Base.F
}**
在上面的例子,F的Derived中的聲明隱藏從基地繼承在F,但是由於新的F Derived中具有私有訪問,其範圍不擴展到MoreDerived。因此,MoreDerived.G中的調用F()是有效的,並且將調用Base.F.
我不理解的是如何static void G() { F(); }
可以訪問基類的方法F時,它可以訪問所有的方法是直接超類和超類隱藏基類的方法F
它不能調用'Derived :: F()',因爲該方法是私有的。在Derived之外,Derived :: F()可能完全不存在。您可能需要稍微改變您的示例,除非這樣做能夠使所有工作都成功 - 在這種情況下,您可以得到答案。 – cHao 2010-10-29 05:50:22