Polimorfizm 3 klas - virutal i override

Polimorfizm 3 klas - virutal i override
BF
  • Rejestracja:ponad 14 lat
  • Ostatnio:około 10 lat
  • 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ć :(

edytowany 1x, ostatnio: By.Future
Sarrus
  • Rejestracja:prawie 14 lat
  • Ostatnio:10 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

edytowany 2x, ostatnio: Sarrus
BF
  • Rejestracja:ponad 14 lat
  • Ostatnio:około 10 lat
  • 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:prawie 12 lat
  • Ostatnio:około 9 lat
  • 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 ;]

edytowany 1x, ostatnio: tom
0

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

Azarien
  • Rejestracja:ponad 21 lat
  • Ostatnio:minuta
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.