Приватный член класса, наследующийся каждым объектом-потомком - C#

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

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

Допустим, я хочу написать класс, каждый экземпляр которого создается на базе родительского объекта. Например, в родительском объекте есть число, конструктор принимает родительский объект и число, на которое нужно увеличить. Получается своеобразный сумматор. Можно ли как-то сделать так, чтобы внутри каждого экземпляра было доступно оригинальное число, не делая соответствующее поле публичным? Хотелось бы написать в методе Original() просто return a;
Листинг программы
  1. using System;
  2. class Summator
  3. {
  4. private Summator parent = null;
  5. private readonly int a;
  6. private readonly int b;
  7. public Summator(int a)
  8. {
  9. this.a = a;
  10. }
  11. public Summator(Summator parent, int b)
  12. {
  13. this.parent = parent;
  14. this.b = b;
  15. }
  16. public int Sum()
  17. {
  18. return parent == null ? a : b + parent.Sum();
  19. }
  20. public int Original()
  21. {
  22. return parent == null ? a : parent.Original();
  23. }
  24. }
  25. class Program
  26. {
  27. public static void Main()
  28. {
  29. Summator five = new Summator(5);
  30. Summator seven = new Summator(five, 2);
  31. Summator ten = new Summator(seven, 3);
  32. Console.WriteLine(ten.Sum());
  33. Console.WriteLine(ten.Original());
  34. }
  35. }

Решение задачи: «Приватный член класса, наследующийся каждым объектом-потомком»

textual
Листинг программы
  1. using System;
  2.  
  3. class Summator
  4. {
  5.     private Summator parent = null;
  6.     protected readonly int a;
  7.     private readonly int b;
  8.  
  9.     public Summator(int a)
  10.     {
  11.         this.a = a;
  12.     }
  13.  
  14.     public Summator(Summator parent, int b)
  15.     {
  16.         this.parent = parent;
  17.         this.a = parent.a;
  18.         this.b = b;
  19.     }
  20.  
  21.     public int Sum()
  22.     {
  23.         return parent == null ? a : b + parent.Sum();
  24.     }
  25.  
  26.     public int Original()
  27.     {
  28.         return a;
  29.     }
  30. }
  31.  
  32. class Program
  33. {
  34.     public static void Main()
  35.     {
  36.         Summator five = new Summator(5);
  37.         Summator seven = new Summator(five, 2);
  38.         Summator ten = new Summator(seven, 3);
  39.         Console.WriteLine(ten.Sum());
  40.         Console.WriteLine(ten.Original());
  41.         // Console.WriteLine(ten.a);
  42.     }
  43. }

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


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

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

7   голосов , оценка 4 из 5

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

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

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