Не вызывается метод из базового типа после приведения типов? - 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");
        }
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 3.833 из 5
Похожие ответы