С#. Использование закрытых элементов в классах-наследниках

75
24 апреля 2021, 18:10

Доброго времени суток участники форума. Столкнулся с проблемой при изучении языка C#. Интересует вопрос: почему при наследовании из производного класса мы можем использовать закрытые поля (обозначенные именно private модификатором) через публичные методы, унаследованные от базового класса. Я думал, что такие поля в наследовании не участвуют и соответственно в производном классе их нет. Оставлю в качестве примера код ниже:

namespace Inheritance
{
   class BaseClass
   {
      private int a;
      public int A
      {
         get
         {
             return a;
         }
         set
         {
            a = value;
         }
      }
   }
   class DerivedClass : BaseClass
   {
   }         
   class Program
   {
      static void Main()
      {
         DerivedClass instance = new DerivedClass();
         instance.A = 3;
         Console.WriteLine(instance.A); // 3
      }
   }
}

Заранее большое спасибо!

Answer 1

Наследование предполагает расширение базового класса. При расширении и речи быть не может, что будет теряться хоть какая-то часть базового класса. Следовательно, производный класс будет иметь все поля и методы базового класса, включая приватные и защищенные. Если бы что-то из этого не наследовал ось, то работали бы публичные методы без реализации класса (приватных полей и методов)?

Разница в том, что из производного класса нельзя обращаться напрямую к приватным полям, но это возможно с использованием геттеров и сеттеров базового класса.

READ ALSO
Регистрация/авторизация ASP.NET MVC

Регистрация/авторизация ASP.NET MVC

Начал изучать ASPNET MVS (NET

110
Реализация MVC (Процедурный стиль)

Реализация MVC (Процедурный стиль)

Начал изучать php и по немного пытаюсь разобраться с MVC (до ООП еще не добрался)Поставил себе цель: сделать простой проект с авторизацией, регистрацией...

81
Dropdown на ul li для языкового меню

Dropdown на ul li для языкового меню

Всем привет! Огромная проблема, не получается сделать дропдаун меню для языкового плагина Polyglot WordPressВызывается список в коде вот так: <ul><?php...

185