Проще говоря, по той же причине, по которой вы носите одежду. Не все должно быть открыто для публики.Отдельные вещи нуждаются в , чтобы быть публичными, чтобы другие могли взаимодействовать с ними, но другие вещи являются частными и должны храниться внутри этого класса.
Хотя я, вероятно, не должен был использоватьв последнем предложении есть слово internal, потому что есть третий вариант: модификатор доступа internal
.Имя, используемое в VB.NET (Friend
), возможно, более понятное.Это указывает на то, что часть данных должна быть видимой для всех других классов в пределах одной сборки, но скрыта снаружи.Аналогичная аналогия применима: есть вещи, которыми вы можете поделиться со своими ближайшими друзьями, но при этом не хотите быть публичными.
Есть и другие более сложные причины, такие как включение скрытия информации, чтобы максимизировать разделениемежду конкретным классом и остальной частью приложения, и для поддержания согласованного открытого интерфейса, даже если детали реализации могли быть изменены между версиями, которые способствуют хорошему объектно-ориентированному дизайну.Если вы действительно хотите понять все эти мелочи, я предлагаю вам найти хорошую книгу по объектно-ориентированному программированию.Очень трудно, если не невозможно, овладеть объектно-ориентированным языком, таким как C #, без четкого понимания основ.
Вещи не являются общедоступными по умолчанию, поскольку они могут содержать конфиденциальную информацию или, по крайней мере, информацию, котораяВы не хотите показывать как часть открытого интерфейса класса.Сделать что-то публичное - это более важное решение с большим риском, чем просто сделать это частным, поэтому вы вынуждены принять это решение явно .