Polimorfizm 3 klas - virutal i override

Polimorfizm 3 klas - virutal i override
BF
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
0

Mam pewien problem, mając 3 klasy

Kopiuj
 
    class A
    {
        public virtual void Wypisz()
        {
            Console.WriteLine("A");
        }
    }

    class B : A
    {
        public override void Wypisz()
        {
            Console.WriteLine("B");
        }
    }

    class C : B
    {
       
    }

Problem polega na tym, że w klasie C mogę przesłonić (override) funkcję Wypisz() Dlaczego tak ? ;d Rozumiem, że klasa B dziedziczy po klasie A funkcję Wypisz(), jest wirtualna więc może ją przesłonić. Z kolegi klasa C rozumiem, że dziedziczy po B też funkcję Wypisz() ale nie jest ona wirtualna tylko przeładowana, więc dlaczego może ją przeładować? Na moje w klasie B powinna być funkcja wypisz z przydomkiem override bo przesłaniam oraz virtual jednocześnie by potomek mógł też przesłonić :(

Sarrus
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2512
0

Metoda Wypisz jest wirtualna i taka pozostanie. Nie ważne ile razy ją zaimplementujesz w klasach potomnych. Nie rozumiem Twoich rozterek. Nadal możesz przesłonić Wypisz w klasie C

BF
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
0

Rozumiem, że jest virtualna ale dlaczego w C mogę ją przesłonić ? Przecież C dziedziczy po B, a w B wypisz jest override a nie virtual ?

TO
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 47
1

To działa na zasadzie drzewa. A jest na samej górze, B ma to co A, C ma to co B. Czyli C zawiera w sobie B i A ;]
Stąd jeśli w A jest metoda wirtualna to C dziedziczy ją za pośrednictwem B ;]

  • Rejestracja: dni
  • Ostatnio: dni
0

Przesłonienie zazwyczaj oznacza schowanie metody (hidden) bez override.

Azarien
  • Rejestracja: dni
  • Ostatnio: dni
2

Rozumiem, że jest virtualna ale dlaczego w C mogę ją przesłonić ?
Bo tak. Musisz się z tym pogodzić :-)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.