Upcasting y Downcasting:
Upcasting: conversión de clase derivada a clase base Downcasting: conversión de clase base a clase derivada
Entendamos lo mismo como ejemplo:
Considere dos clases Shape como Mi clase principal y Circle como una clase derivada, definida de la siguiente manera:
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; }
}
Upcasting:
Forma s = nueva Forma ();
Círculo c = s;
Ambos cys hacen referencia a la misma ubicación de memoria, pero ambos tienen vistas diferentes, es decir, utilizando la referencia "c" puede acceder a todas las propiedades de la clase base y la clase derivada también, pero utilizando la referencia "s" puede acceder a las propiedades de la única clase padre.
Un ejemplo práctico de upcasting es la clase Stream, que es la clase base de todos los tipos de lectores de stream de .net framework:
Lector StreamReader = nuevo StreamReader (nuevo FileStreamReader ());
aquí, FileStreamReader () se actualiza a streadm reder.
Abatimiento:
Forma s = new Circle (); aquí, como se explicó anteriormente, la vista de s es el único padre, para que sea tanto para el padre como para el niño, debemos abatirlo
var c = (Círculo) s;
El ejemplo práctico de Downcasting es la clase de botón de WPF.
Employee emp= mgr;
debería ser suficiente.