Не вызывается метод из базового типа после приведения типов? - C#
Формулировка задачи:
При приведении типов от производного класса Manager к базовому классу Employee, у объекта "e" к которому был приведен Manager, вызывается метод из производного класса.
Почему не вызывается метод из базового типа после приведения?
class Employee{ public int Id { get; set; } public virtual void Foo(){ Console.WriteLine("Hello Employee"); } } class Manager : Employee{ public string Name { get; set; } public virtual void Foo(){ Console.WriteLine("Hello Manager"); } } ... static void Main(){ Manager m = new Manager(); Employee e = m; e.Id = 10;//объект e содержит собственное свойство Id e.FirstName = "Foo";//объект e не содержит FirstName, из класса Manager e.Foo();//output: Hello Manager Console.WriteLine(e);//output: Manager }
Решение задачи: «Не вызывается метод из базового типа после приведения типов?»
textual
Листинг программы
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication2 { class Program { static void Main(string[] args) { Manager m = new Manager(); Employee e = new Employee(); m.Foo(); ((Employee)m).Foo(); } } class Employee { public int Id { get; set; } public virtual void Foo() { Console.WriteLine("Hello Employee"); } } class Manager : Employee { public string Name { get; set; } public new void Foo() { Console.WriteLine("Hello Manager"); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д