Читаем C#. Объектно ориентированное программирование полностью

ПРИМЕЧАНИЕ Поля у класса тоже не очень простые. Они описаны без ключе-

вого слова public. Такие поля являются закрытыми и недоступны

вне класса. Поэтому в программном коде класса эти поля можно

использовать,  а  вот  обратиться  напрямую  к  полям  вне  класса  не

получится. Например, в главном методе программы создается объ-

ект fellow класса Person. И хотя у объекта fellow есть поля name и  age,  использовать  инструкцию  вида  fellow.name  или  fellow.age не получится.

С методом show() все просто — он нужен для отображения значений по-

лей name и age объекта, из которого вызывается метод. Нас интересует

метод set(). С помощью метода задаются значения полей name и age. Мы

перегружаем метод для того, чтобы можно было по-разному задавать

значения полей объекта. Естественным представляется вариант, когда

мы указываем в качестве аргументов метода set() значения, которые

присваиваются полям объекта. В этом случае первый, числовой, аргу-

мент определяет значение поля age, а второй, текстовый, аргумент задает

значение поля name.

Перегрузка методов           63

Если метод set() вызывается без аргументов, поле age получит нулевое зна-

чение, а значением поля name будет текст "Нет имени". Кроме этого, можно

передать только один аргумент методу set(). Если это числовой аргумент, то соответствующее значение получает поле age. Поле name, которое обде-

лено вниманием при передаче аргументов методу set(), получит значение

"Нет имени". В случае, когда единственный аргумент метода set() тексто-

вый, это текстовое значение будет присвоено полю name объекта. Числовое

поле age получит нулевое значение.

Версии метода set() с двумя аргументами и без аргументов описы-

ваются в явном виде. А вот при описании двух версий метода set() с одним аргументом мы схитрили — в теле перегружаемого метода

вызывали версию метода с двумя аргументами. Вообще же следует

понимать, что на самом деле разные версии перегруженного мето-

да — это разные методы. Просто эти методы имеют совпадающие

имена.

В главном методе программы в классе PersonDemo проверяются различные

способы присваивания значений полям объекта fellow класса Parson. Для

присваивания значений полям объекта мы вызываем из объекта метод

set() с разными наборами аргументов. Проверка значений полей объекта

осуществляется командой fellow.show(). Результат выполнения програм-

мы представлен на рис. 2.2.

Рис. 2.2.  Результат выполнения программы с перегруженным методом

ПРИМЕЧАНИЕ Имеет смысл акцентировать внимание еще на одном немаловаж ном

обстоятельстве, которое касается закрытых полей name и age. Как

отмечалось выше, эти поля закрытые и доступа к ним вне объекта

нет. Вместе с тем поля вполне функциональны и доступны к исполь-

зованию. Для доступа к закрытым полям мы используем открытые

методы: у нас есть доступ к открытым методам, а открытые методы

имеют доступ к закрытым полям. На практике это очень удобно.

64

Глава 2. Классы и объекты

Конструкторы и деструкторы

Нам песня строить и жить помогает.

Из к/ф «Веселые ребята»

Сейчас самое время познакомиться с конструкторами и их антиподами

в мире программирования — деструкторами. Здесь нет ничего сложного.

Конструктор — это специальный метод, который вызывается автоматиче-

ски при создании объекта класса. Таким образом, если мы хотим, чтобы

при создании объекта происходило нечто особенное, создаем конструктор.

Деструктор — это метод, который вызывается автоматически при удале-

нии объекта из памяти. По сравнению с конструкторами, деструкторы ис-

пользуются не так часто, но не менее эффектно.

Конструктор описывается практически так же, как обычный метод, но име-

ет некоторые особенности:

 Имя конструктора совпадает с именем класса.

 Конструктор объявляется с атрибутом public (конструктор должен быть

открытым методом).

 Конструктор не возвращает результат, а идентификатор типа результата

для него не указывается.

 У конструктора могут быть аргументы и конструкторы можно перегру-

жать (у класса может быть несколько конструкторов).

Относительно деструктора правила еще более жесткие:

 Имя деструктора — это тильда (символ ~) плюс имя класса.

 При объявлении деструктора нет необходимости использовать атрибут

public. Деструктор не возвращает результат, а идентификатор типа ре-

зультата для деструктора не указывается.

 У деструктора нет аргументов, и он не перегружается (у класса может

быть только один деструктор).

Наличие или отсутствие явно описанных конструкторов напрямую влияет

на способы создания объектов класса. Все дело в том, что команда создания

объекта выглядит на самом деле как new конструктор_класса(аргументы).

Другими словами, то, что мы ранее называли «имя класса», в команде созда-

ния объекта является на самом деле идентификатором конструктора клас-

са. В скобках указываются аргументы, которые передаются конструктору.

Если конструкторы явно в классе не описаны, используется конструк-

тор по умолчанию, у которого нет аргументов.

Конструкторы и деструкторы           65

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных