Эта программа состоит из двух классов:BuildingиBuildingDemo.В классеBuildingDemoсначала создается экземплярhouseклассаBuildingс помощью методаMain, а затем в коде методаMain осуществляется доступ к переменным экземпляраhouseдля присваивания им значений и последующего использования этих значений. Следует особо подчеркнуть, чтоBuildingиBuildingDemo— это два совершенно отдельных класса. Единственная взаимосвязь между ними состоит в том, что в одном из них создается экземпляр другого. Но, несмотря на то, что это раздельные классы, у кода из классаBuildingDemoимеется доступ к членам классаBuilding,поскольку они объявлены как открытые(public).Если бы при их объявлении не был указан спецификатор доступаpublic,то доступ к ним ограничивался бы пределамиBuilding,а следовательно, их нельзя было бы использовать в классеBuildingDemo.
Допустим, что исходный текст приведенной выше программы сохранен в файлеUseBuilding.cs.В результате ее компиляции создается файлUseBuilding.exe.При этом оба класса,BuildingиBuildingDemo,автоматически включаются в состав исполняемого файла. При выполнении данной программы выводится следующий результат.
Дом имеет:
2 этажа
4 жильца
2500 кв. футов общей площади, из них
625 приходится на одного человека
Но классамBuildingиBuildingDemoсовсем не обязательно находиться в одном и том же исходном файле. Каждый из них можно поместить в отдельный файл, напримерBuilding. csиBuildingDemo. cs,а компилятору C# достаточно сообщить, что оба файла должны быть скомпилированы вместе. Так, если разделить рассматриваемую здесь программу на два таких файла, для ее компилирования можно воспользоваться следующей командной строкой.
csc Building.cs BuildingDemo.es
Если вы пользуетесь интегрированной средой разработки Visual Studio, то вам нужно ввести оба упомянутых выше файла в свой проект и затем скомпоновать их.
Прежде чем двигаться дальше, рассмотрим следующий основополагающий принцип: у каждого объекта имеются свои копии переменных экземпляра, определенных в его классе. Следовательно, содержимое переменных в одном объекте может отличаться от их содержимого в другом объекте. Между обоими объектами не существует никакой связи, за исключением того факта, что они являются объектами одного и того же типа. Так, если имеются два объекта типаBuilding,то у каждого из них своя копия переменныхFloors, AreaиOccupants,а их содержимое в обоих объектах может отличаться. Этот факт демонстрируется в следующей программе.
// В этой программе создаются два объекта типа Building.
using System;