Подтвердить что ты не робот

Создается ли объект базового класса при создании нового объекта его унаследованного класса?

В С#, когда мы создаем унаследованный объект класса, он также создает объект базового класса? Не путайте, потому что он вызывает конструктор базового класса из конструктора классов детей.

Будет вызов конструктора базового класса из конструктора дочерних классов, создать объект базового класса?

4b9b3361

Ответ 1

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

Ответ 2

Создается только один объект, но он имеет два "слоя" - свойства и поведение базового класса, а также свойства и поведение унаследованного класса. Таким образом, в одном смысле ответ "Да, создается объект базового класса" (этот объект имеет те же свойства и поведение, что и любой другой объект базового класса), но он тот же объект, что и унаследованный класс, поэтому также верно: "Нет, базовый объект не создается ТАКЖЕ.". Ключевым отличием является "также".

Тот факт, что один объект может казаться двумя разными вещами (или более), лежит в основе объектной ориентации. Это делает его одновременно мощным и сложным.

Ответ 3

Нет, объект базового класса не создается этим путем. и Когда объект дочернего класса создается, конструктор базового класса вызывается автоматически даже перед вызовом конструктора дочерних классов, поэтому я не думаю, что нам нужно вызвать конструктор базового класса из дочернего класса.

Как правило, конструктор базового класса используется для выполнения некоторой задачи в фоновом режиме до того, как будет запущена действительная задача дочерним классом.