Повышение и понижение:
Повышение качества: приведение от производного класса к базовому классу. Приведение вниз: приведение от базового класса к производному классу
Разберем то же самое на примере:
Рассмотрим два класса Shape как родительский класс и Circle как производный класс, определенные следующим образом:
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; }
}
Апкастинг:
Форма s = новая форма ();
Круг c = s;
И c, и s ссылаются на одну и ту же ячейку памяти, но оба они имеют разные представления, т.е. используя ссылку «c», вы также можете получить доступ ко всем свойствам базового и производного классов, но используя ссылку «s», вы можете получить доступ к свойствам единственного родительского класса.
Практическим примером апкастинга является класс Stream, который является базовым классом для всех типов потокового считывателя фреймворка .net:
StreamReader reader = новый StreamReader (новый FileStreamReader ());
здесь FileStreamReader () преобразован в streadm reder.
Понижение:
Форма s = новый круг (); здесь, как объяснено выше, представление s является единственным родителем, чтобы сделать его и для родителя, и для ребенка, нам нужно его уменьшить
var c = (Круг) s;
Практическим примером Downcasting является класс кнопок WPF.
Employee emp= mgr;
должно хватить.