Существует только одно статическое свойство Instance
, и оно определено в BaseClass
, что также является единственным типом, который может его изменить (поскольку набор private
).
Происходит следующее: каждый из ваших подклассов SubClassA
и SubClassB
вызывает конструктор BaseClass
в своих собственных конструкторах.Этот конструктор устанавливает Instance
на инициализируемый экземпляр BaseClass
.
Последним таким экземпляром в вашем примере кода является экземпляр SubClassB
;следовательно, свойство one Instance
будет установлено на этот экземпляр к тому времени, когда вы достигнете своих вызовов Console.WriteLine
.
Вы можете полностью изменить построение ваших объектов SubClassA
и SubClassB
и вы увидите, что Instance
будет установлен вместо SubClassA
.