Приватный член класса, наследующийся каждым объектом-потомком - C#
Формулировка задачи:
Допустим, я хочу написать класс, каждый экземпляр которого создается на базе родительского объекта. Например, в родительском объекте есть число, конструктор принимает родительский объект и число, на которое нужно увеличить. Получается своеобразный сумматор. Можно ли как-то сделать так, чтобы внутри каждого экземпляра было доступно оригинальное число, не делая соответствующее поле публичным? Хотелось бы написать в методе Original() просто return a;
Листинг программы
- using System;
- class Summator
- {
- private Summator parent = null;
- private readonly int a;
- private readonly int b;
- public Summator(int a)
- {
- this.a = a;
- }
- public Summator(Summator parent, int b)
- {
- this.parent = parent;
- this.b = b;
- }
- public int Sum()
- {
- return parent == null ? a : b + parent.Sum();
- }
- public int Original()
- {
- return parent == null ? a : parent.Original();
- }
- }
- class Program
- {
- public static void Main()
- {
- Summator five = new Summator(5);
- Summator seven = new Summator(five, 2);
- Summator ten = new Summator(seven, 3);
- Console.WriteLine(ten.Sum());
- Console.WriteLine(ten.Original());
- }
- }
Решение задачи: «Приватный член класса, наследующийся каждым объектом-потомком»
textual
Листинг программы
- using System;
- class Summator
- {
- private Summator parent = null;
- protected readonly int a;
- private readonly int b;
- public Summator(int a)
- {
- this.a = a;
- }
- public Summator(Summator parent, int b)
- {
- this.parent = parent;
- this.a = parent.a;
- this.b = b;
- }
- public int Sum()
- {
- return parent == null ? a : b + parent.Sum();
- }
- public int Original()
- {
- return a;
- }
- }
- class Program
- {
- public static void Main()
- {
- Summator five = new Summator(5);
- Summator seven = new Summator(five, 2);
- Summator ten = new Summator(seven, 3);
- Console.WriteLine(ten.Sum());
- Console.WriteLine(ten.Original());
- // Console.WriteLine(ten.a);
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д