Проще говоря, по той же причине, что и вы носите одежду. Не все должно подвергаться публике в любое время. Выбранные вещи нуждаются в, чтобы быть общедоступными, чтобы другие могли взаимодействовать с ними, но другие вещи являются частными и должны быть внутренними для этого класса.
Хотя, вероятно, я не должен был использовать слово внутри этого последнего предложения, потому что есть третий вариант: модификатор доступа internal
. Имя, используемое в VB.NET (Friend
), вероятно, более ясное. Это указывает на то, что часть данных должна быть видна всем другим классам внутри одной сборки, но скрыта извне. Аналогичная аналогия применяется: есть вещи, которые вы могли бы поделиться со своими ближайшими друзьями, но все же не хотите быть публичными.
Существуют и другие более сложные причины, такие как скрытие информации, чтобы максимизировать разделение между конкретным классом и остальной частью приложения и поддерживать согласованный публичный интерфейс, даже если детали реализации могли быть изменены между версиями, все это способствует хорошему объектно-ориентированному дизайну. Если вы действительно хотите понять ничтожество, я предлагаю собрать хорошую книгу по объектно-ориентированному программированию.Очень сложно, если не невозможно, овладеть объектно-ориентированным языком, таким как C#, без глубокого понимания основ.
Вещи не являются общедоступными по умолчанию, поскольку они могут содержать конфиденциальную информацию или, по крайней мере, информацию, которую вы не хотите раскрывать как часть общедоступного интерфейса класса. Сделать что-то публичное - это большее решение с большим риском, чем просто сделать его приватным, поэтому вы должны принять это решение явно.
Когда вы говорите 'object', вы имеете в виду' member' или 'class'? – CodesInChaos
«Моя точка зрения заключается в том, что вы не можете просто набирать label1.text, вам нужно ввести class.label1.text, поэтому нет возможности получить прослушивание, потому что в каждой из форм/классов есть метка1». Какие? –