Ошибка: Невозможно создать экземпляр абстрактного класса - C#

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

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

Листинг программы
  1. class Program
  2. {
  3. static void Main(string[] args)
  4. {
  5. List<Prog> listSoft = new List<Prog>(); //массив программ
  6. Console.Clear(); //Очистка экрана
  7. //Задаем название окна консоли
  8. Console.Title = "Контрольная работа 2. Вариант 0. Классы.";
  9. //заполняем:
  10. // 1
  11. listSoft.Add( new Prog()); //добавляем без параметров
  12. // 2
  13. FreeProg freeSoft = new FreeProg();
  14. freeSoft.SoftName = "Графический редактор";
  15. freeSoft.SoftVendor = "ООО Скорпион";
  16. freeSoft.InstallDate = new DateTime(2016, 2, 10); //10-го февраля
  17. listSoft.Add(freeSoft);
  18. // 3
  19. ShareProg shareSoft = new ShareProg();
  20. shareSoft.SoftName = "Текстовый редактор";
  21. shareSoft.SoftVendor = "ООО Скорпион";
  22. shareSoft.InstallDate = new DateTime(2016, 2, 10); //10-го февраля
  23. shareSoft.ShareDays = 50;
  24. listSoft.Add(shareSoft);
  25. // 4
  26. PropProg propSoft = new PropProg();
  27. propSoft.SoftName = "САПР";
  28. propSoft.SoftVendor = "ООО Скорпион";
  29. propSoft.InstallDate = new DateTime(2016, 2, 10); //10-го февраля
  30. propSoft.Price = 300;
  31. propSoft.ExpireDate = new DateTime(2016, 4, 1); //1-го апреля
  32. listSoft.Add(propSoft);
  33.  
  34. //выводим общий список:
  35. Console.WriteLine("---------------------------------------------------------");
  36. foreach (Prog soft in listSoft)
  37. {
  38. soft.PrintInfo();
  39. }
  40. //выводим с те, что можно использовать:
  41. Console.WriteLine("Можно использовать следующие программы:");
  42. foreach (Prog soft in listSoft)
  43. {
  44. if (soft.isWorking())
  45. soft.PrintInfo();
  46. }
  47. Console.WriteLine("Нажмите любую клавишу...");
  48. Console.ReadKey(); //ожидание нажатия клавиши
  49. }
  50. }
  51. enum eSoftType
  52. {
  53. Unknown,
  54. Freeware,
  55. Shareware,
  56. Propware
  57. }
  58. abstract class Prog //БАЗОВЫЙ КЛАСС
  59. {
  60. protected string m_SoftName; //название программы,
  61. protected string m_SoftVendor; //производитель программы,
  62. protected eSoftType m_SoftType; //тип программы,
  63. protected DateTime m_InstallDate; //дата установки,
  64. //конструктор без параметров
  65. public Prog()
  66. {
  67. m_SoftName = "Неизвествная программа";
  68. m_SoftVendor = "Неизвестный производитель";
  69. m_SoftType = eSoftType.Unknown;
  70. m_InstallDate = DateTime.Now;
  71. }
  72. //конструктор c параметррами
  73. public Prog(string softName, string softVendor, eSoftType softType, DateTime installDate)
  74. {
  75. m_SoftName = softName;
  76. m_SoftVendor = softVendor;
  77. m_SoftType = softType;
  78. m_InstallDate = installDate;
  79. }
  80. //=========== СВОЙСТВА ============
  81. public string SoftName
  82. {
  83. get { return m_SoftName; }
  84. set { m_SoftName = value; }
  85. }
  86. public string SoftVendor
  87. {
  88. get { return m_SoftVendor; }
  89. set { m_SoftVendor = value; }
  90. }
  91. public eSoftType SoftType
  92. {
  93. get { return m_SoftType; }
  94. set { m_SoftType = value; }
  95. }
  96. public DateTime InstallDate
  97. {
  98. get { return m_InstallDate; }
  99. set { m_InstallDate = value; }
  100. }
  101. //вывод информации на экран:
  102. public virtual void PrintInfo()
  103. {
  104. Console.WriteLine("Программа: '{0}', производитель: '{1}', тип: '{2}', дата установки: {3}'",
  105. m_SoftName, m_SoftVendor, m_SoftType, m_InstallDate);
  106. }
  107. public virtual bool isWorking() //возможность использования
  108. {
  109. return true;
  110. }
  111. }
  112.  
  113. class FreeProg : Prog //Свободное
  114. {
  115. public new eSoftType SoftType
  116. {
  117. get { return eSoftType.Freeware; }
  118. }
  119. //вывод информации на экран:
  120. public override void PrintInfo()
  121. {
  122. Console.WriteLine("Программа: '{0}', производитель: '{1}', тип: 'Бесплатная', дата установки: {2}'",
  123. m_SoftName, m_SoftVendor, m_InstallDate);
  124. }
  125. public override bool isWorking() //возможность использования
  126. {
  127. return true;
  128. }
  129. }
  130. class ShareProg : Prog // Условно-беспладное
  131. {
  132. private int m_ShareDays; //срок условного использования (дни)
  133. public new eSoftType SoftType
  134. {
  135. get { return eSoftType.Shareware; }
  136. }
  137. public int ShareDays
  138. {
  139. get { return m_ShareDays; }
  140. set { m_ShareDays = value; }
  141. }
  142. //вывод информации на экран:
  143. public override void PrintInfo()
  144. {
  145. Console.WriteLine("Программа: '{0}', производитель: '{1}', тип: 'Усл-Бесплатная', дата установки: {2}'",
  146. m_SoftName, m_SoftVendor, m_InstallDate);
  147. }
  148. public override bool isWorking() //возможность использования
  149. {
  150. return (m_InstallDate.AddDays(m_ShareDays) >= DateTime.Now);
  151. }
  152. }
  153.  
  154. class PropProg : Prog // Коммерческое
  155. {
  156. private int m_Price; //цена
  157. private DateTime m_ExpireDate; //дата использования по лицензии
  158. public new eSoftType SoftType
  159. {
  160. get { return eSoftType.Propware; }
  161. }
  162. public int Price
  163. {
  164. get { return m_Price; }
  165. set { m_Price = value; }
  166. }
  167. public DateTime ExpireDate
  168. {
  169. get { return m_ExpireDate; }
  170. set { m_ExpireDate = value; }
  171. }
  172. //вывод информации на экран:
  173. public override void PrintInfo()
  174. {
  175. Console.WriteLine("Программа: '{0}', производитель: '{1}', тип: 'Коммерческая' (цена: ${2}), дата установки: {3}'",
  176. m_SoftName, m_SoftVendor, m_Price, m_InstallDate);
  177. }
  178. public override bool isWorking() //возможность использования
  179. {
  180. return (m_ExpireDate >= DateTime.Now);
  181. }
  182. }
  183. }
Ругается вот на эту часть кода:
Листинг программы
  1. listSoft.Add( new Prog());
Пишет ошибку: Невозможно создать экземпляр абстрактного класса 1.Prog Помогите,пожалуйста,ее исправить...

Решение задачи: «Ошибка: Невозможно создать экземпляр абстрактного класса»

textual
Листинг программы
  1. FreeProg freeSoft = new FreeProg();
  2.             freeSoft.SoftName = "Графический редактор";
  3.             freeSoft.SoftVendor = "ООО Скорпион";
  4.             freeSoft.InstallDate = new DateTime(2016, 2, 10); //10-го февраля

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


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

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

6   голосов , оценка 3.167 из 5

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

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

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