Это не дизайнерское решение, а скорее логичное.Начать проще всего с рассмотрения соответствующих определений понятий:
Статический класс - это класс, экземпляр которого невозможно создать. Это означает, что вы не можете создавать объекты, относящиеся к типу этого класса..
Нестатические члены связаны с конкретным экземпляром класса. Они содержат данные, которые исключительно связаны с одним единственным объектом этого типа класса.
Таким образом, если статический класс содержит нестатические члены, вы никогда не сможете получить доступ к этим данным или вызвать этот метод, потому что вы никогда не сможете создать экземпляр объекта этого статического класса.Вместо этого у вас должны быть все статические члены, которые можно вызывать напрямую из статического экземпляра класса.
Однако вы можете иметь нестатические классы, которые содержатстатические члены.Таким образом, вы можете получить доступ к данным или вызвать методы, представленные как статические члены, без создания экземпляра объекта этого класса.Тем не менее, вы можете также создать экземпляр объекта этого класса и получить доступ к нестатическим (или экземплярам) членам.Например, если у вас был класс Circle
, вы могли бы иметь статические члены, такие как функция CalculateArea
и поле PI
.Эти члены применимы ко всем кругам, как правило, просто в силу того, что они являются кругами.Но у вас также могут быть нестатические члены, которые связаны с конкретными экземплярами этого класса, поскольку они описывают определенные объекты круга.Это могут быть поля Diameter
и Circumference
.Вы также можете иметь нестатические функции, которые вычисляют площадь круга, учитывая данные, хранящиеся в нестатических полях для этого конкретного экземпляра.