To jest mylące dla mnie proszę expalin mnie zachowanie tego?C# ukrywanie zamieszania
Oświadczenie nowego członka ukrywa dziedziczonego członka wyłącznie w zakresie nowego członka. Kopiowanie
**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
}**
W powyższym przykładzie, deklaracja F w Pochodzące ukrywa F, który został odziedziczony z bazy, ale ponieważ nowa F w Pochodzące posiada dostęp do prywatnej, jej zakres nie obejmuje MoreDerived. Zatem wywołanie F() w MoreDerived.G jest poprawne i wywoła Base.F.
ja nie rozumiejąc, że jak static void G() { F(); }
może uzyskać dostęp do metody klasy bazowej f kiedy może uzyskać dostęp do wszystkich metod jest natychmiastowa klasy super i super klasa ukrywa metodę F klasy bazowej
Nie można wywołać 'Wyprowadzonego :: F()', ponieważ ta metoda jest prywatna. Poza 'Derived',' Derived :: F() 'może równie dobrze nie istnieć. Być może będziesz musiał trochę zmienić swój przykład, chyba że to wszystko działa - w takim przypadku masz odpowiedź. – cHao