Пустое поле в производном классе - C#
Формулировка задачи:
Добрый день!
Не могли бы вы подсказать ответ на такой вопрос:
Есть базовый класс:
И далее создаются производные классы, которые помимо прочего будут дополнять метод GetInfo базового класса своими данными:
Вопрос собственно заключается в том, что в производных классах поле base.GetInfo() пустое, но если свойству Name в базовом классе сразу задать значение, а не из конструктора, то все выводится правильно...
Подскажите, что подправить надобно!
public class AutoOrganization { public string Name { get; set; } public AutoOrganization(string name) { this.Name = name; } public virtual void GetInfo() { Console.WriteLine("Название автопредприятия: "+Name); } }
private static double Mileage; private static int busCount; public Bus(double mileage) { Mileage += mileage; busCount++; } public static void GetMileage() { Console.WriteLine("Пробег: "+Mileage); } public double AverageMileage() { return Mileage / busCount; } public override void GetInfo() { base.GetInfo(); Console.WriteLine("Общий пробег автобусов: " + Mileage); Console.WriteLine("Количество автобусов в автопарке: "+busCount); Console.WriteLine("Средний пробег одного автобуса: " + AverageMileage()); } }
Решение задачи: «Пустое поле в производном классе»
textual
Листинг программы
using System; using System.Collections.Generic; using System.Linq; namespace AutoParkLib { public abstract class Auto { public string Number { get; set; } public int Mileage { get; set; } public Auto(string number, int mileage) { Number = number; Mileage = mileage; } } public class Bus : Auto { private int SeatsNumber { get; set; } public Bus(string number, int mileage, int seatsNumber) : base(number, mileage) { SeatsNumber = seatsNumber; } } public class Truck : Auto { public int Carrying { get; set; } public Truck(string number, int mileage, int carrying) : base(number, mileage) { Carrying = carrying; } } public class AutoPark { public List<Auto> AutoList { set; get; } public string ParkName; public AutoPark(string parkName) { ParkName = parkName; AutoList = new List<Auto>(); } public void Add(Auto auto) { AutoList.Add(auto); } public double AverMiliage<T>() { return AutoList.OfType<T>().Average(x => (x as Auto).Mileage); } } class Program { public static void Main(string[] args) { AutoPark park = new AutoPark("Автопарк №1"); park.Add(new Bus("123321", 500000, 55)); park.Add(new Truck("3245345", 100000, 5)); park.Add(new Bus("56786", 200000, 80)); park.Add(new Truck("2345", 120000, 15)); park.Add(new Bus("567856", 260000, 40)); Console.WriteLine("Средний пробег автобусов {0}", park.AverMiliage<Bus>()); Console.WriteLine("Средний пробег грузовиков {0}", park.AverMiliage<Truck>()); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д