Приватный член класса, наследующийся каждым объектом-потомком - 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); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д