Наследование (изменение приватного поля родительского класса) - C#
Формулировка задачи:
Только начал изучать ООП, и сразу не могу разобраться с наследованием. Вот написал прогу, 2 класса, один - наследует от 1 класса. При попытке изменить значение приватного поля accomulate у родительского класса - ошибки нет, но значение поля не меняется, что показывает проверка с выводом его в консоль, в чем может быть дело?
В последних строках поле accomulator при вызове метода умножения не изменяется и выводится то же самое число
class Calc
{
private int accomulator;
public void Init(int n)
{
accomulator = n;
}
public int Get
{
get
{
return accomulator;
}
set
{
accomulator = value;
}
}
public void Add(int n)
{
accomulator += n;
}
public void Sub(int n)
{
accomulator -= n;
}
}
class OtherCalc : Calc //наследуем класс Calc
{
public void Mul(int n)
{
Get *= n; //умножаем, но значение поля не меняется
}
}
class Program
{
static void Main(string[] args)
{
int zn;
Calc calc = new Calc();
Console.WriteLine("Введите исходное значение поля accomulator");
calc.Init(Convert.ToInt32(Console.ReadLine())); //считали значение с консоли и записали его в accomulator
zn = calc.Get; //получили значение accomulator
Console.WriteLine("Значение переменной zn - {0}",zn);
OtherCalc othercalc = new OtherCalc(); //создаем экземпляр класса OtherCalc
Console.WriteLine("Введите значение, на которое нужно умножить accomulator:");
othercalc.Mul(Convert.ToInt32(Console.ReadLine()));
Console.WriteLine("Измененный знак : {0}", calc.Get); //тут выводит то же самое число, не умноженное на n
Console.ReadKey();
}
}Решение задачи: «Наследование (изменение приватного поля родительского класса)»
textual
Листинг программы
static void Main(string[] args)
{
Console.WriteLine("Введите исходное значение поля accomulator");
OtherCalc othercalc = new OtherCalc(Convert.ToInt32(Console.ReadLine()));
Console.WriteLine("Введите значение, на которое нужно умножить accomulator:");
othercalc.Mul(Convert.ToInt32(Console.ReadLine()));
Console.WriteLine("Измененный знак : {0}", othercalc.Get);
Console.ReadKey();
}