Наследование (изменение приватного поля родительского класса) - C#

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

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

Только начал изучать ООП, и сразу не могу разобраться с наследованием. Вот написал прогу, 2 класса, один - наследует от 1 класса. При попытке изменить значение приватного поля accomulate у родительского класса - ошибки нет, но значение поля не меняется, что показывает проверка с выводом его в консоль, в чем может быть дело?
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();
        }
    }
В последних строках поле accomulator при вызове метода умножения не изменяется и выводится то же самое число

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

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();
        }

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


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

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

10   голосов , оценка 4.2 из 5
Похожие ответы