Upcasting i Downcasting:
Upcasting: rzutowanie z klasy pochodnej do klasy podstawowej. Downcasting: rzutowanie z klasy bazowej do klasy pochodnej
Rozumiemy to samo, co na przykładzie:
Rozważ dwie klasy Shape jako Moja klasa nadrzędna i Circle jako klasę pochodną, zdefiniowane w następujący sposób:
class Shape
{
public int Width { get; set; }
public int Height { get; set; }
}
class Circle : Shape
{
public int Radius { get; set; }
public bool FillColor { get; set; }
}
Nadawanie:
Kształt s = nowy Kształt ();
Okrąg c = s;
Zarówno c, jak i s odnoszą się do tej samej lokalizacji w pamięci, ale oba mają różne widoki tzn. Używając odwołania "c" możesz również uzyskać dostęp do wszystkich właściwości klasy bazowej i pochodnej, ale używając odnośnika "s" możesz uzyskać dostęp do właściwości jedynej klasy nadrzędnej.
Praktycznym przykładem upcastingu jest klasa Stream, która jest klasą bazową wszystkich typów czytników strumieniowych frameworka .net:
StreamReader reader = new StreamReader (new FileStreamReader ());
tutaj FileStreamReader () jest upcastowany do reder streadm.
Downcasting:
Kształt s = nowy okrąg (); tutaj, jak wyjaśniono powyżej, widok s jest jedynym rodzicem, aby uczynić go zarówno dla rodzica, jak i dziecka, musimy go obniżyć
var c = (Circle) s;
Praktycznym przykładem Downcasting jest klasa przycisku WPF.
Employee emp= mgr;
powinno wystarczyć.