Пустое поле в производном классе - C#

Узнай цену своей работы

Формулировка задачи:

Добрый день! Не могли бы вы подсказать ответ на такой вопрос: Есть базовый класс:
Листинг программы
  1. public class AutoOrganization
  2. {
  3. public string Name { get; set; }
  4. public AutoOrganization(string name)
  5. {
  6. this.Name = name;
  7. }
  8. public virtual void GetInfo()
  9. {
  10. Console.WriteLine("Название автопредприятия: "+Name);
  11. }
  12. }
И далее создаются производные классы, которые помимо прочего будут дополнять метод GetInfo базового класса своими данными:
Листинг программы
  1. private static double Mileage;
  2. private static int busCount;
  3. public Bus(double mileage)
  4. {
  5. Mileage += mileage;
  6. busCount++;
  7. }
  8. public static void GetMileage()
  9. {
  10. Console.WriteLine("Пробег: "+Mileage);
  11. }
  12. public double AverageMileage()
  13. {
  14. return Mileage / busCount;
  15. }
  16. public override void GetInfo()
  17. {
  18. base.GetInfo();
  19. Console.WriteLine("Общий пробег автобусов: " + Mileage);
  20. Console.WriteLine("Количество автобусов в автопарке: "+busCount);
  21. Console.WriteLine("Средний пробег одного автобуса: " + AverageMileage());
  22. }
  23. }
Вопрос собственно заключается в том, что в производных классах поле base.GetInfo() пустое, но если свойству Name в базовом классе сразу задать значение, а не из конструктора, то все выводится правильно... Подскажите, что подправить надобно!

Решение задачи: «Пустое поле в производном классе»

textual
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4.  
  5. namespace AutoParkLib
  6. {
  7.     public abstract class Auto
  8.     {
  9.         public string Number { get; set; }
  10.         public int Mileage { get; set; }
  11.         public Auto(string number, int mileage)
  12.         {
  13.             Number = number;
  14.             Mileage = mileage;
  15.         }
  16.     }
  17.  
  18.     public class Bus : Auto
  19.     {
  20.         private int SeatsNumber { get; set; }
  21.         public Bus(string number, int mileage, int seatsNumber)
  22.             : base(number, mileage)
  23.         {
  24.             SeatsNumber = seatsNumber;
  25.         }
  26.     }
  27.  
  28.     public class Truck : Auto
  29.     {
  30.         public int Carrying { get; set; }
  31.         public Truck(string number, int mileage, int carrying)
  32.             : base(number, mileage)
  33.         {
  34.             Carrying = carrying;
  35.         }
  36.     }
  37.  
  38.     public class AutoPark
  39.     {
  40.         public List<Auto> AutoList { set; get; }
  41.         public string ParkName;
  42.         public AutoPark(string parkName)
  43.         {
  44.             ParkName = parkName;
  45.             AutoList = new List<Auto>();
  46.         }
  47.  
  48.         public void Add(Auto auto)
  49.         {
  50.             AutoList.Add(auto);
  51.         }
  52.  
  53.         public double AverMiliage<T>()
  54.         {
  55.             return AutoList.OfType<T>().Average(x => (x as Auto).Mileage);
  56.         }
  57.  
  58.     }
  59.  
  60.     class Program
  61.     {
  62.         public static void Main(string[] args)
  63.         {
  64.             AutoPark park = new AutoPark("Автопарк №1");
  65.             park.Add(new Bus("123321", 500000, 55));
  66.             park.Add(new Truck("3245345", 100000, 5));
  67.             park.Add(new Bus("56786", 200000, 80));
  68.             park.Add(new Truck("2345", 120000, 15));
  69.             park.Add(new Bus("567856", 260000, 40));
  70.             Console.WriteLine("Средний пробег автобусов {0}", park.AverMiliage<Bus>());
  71.             Console.WriteLine("Средний пробег грузовиков {0}", park.AverMiliage<Truck>());
  72.         }
  73.  
  74.     }
  75. }

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


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

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

14   голосов , оценка 4.071 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы