Не вызывается метод из базового типа после приведения типов? - 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");
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д