Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ООП.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
57 Кб
Скачать
☆

11. Объявление и определение методов класса.

Синтаксис объявления методов соответствует тому, что вы могли ожидать от С-подобного языка, и почти идентичен синтаксису С++ и Java. Основное синтаксическое отличие от С++ заключается в том, что в С# каждый метод отдельно объявлен как общедоступный или приватный.

Невозможно использовать блоки public: для группировки нескольких определений методов. К тому же все методы С# объявляются и определяются в определении класса. В С# нет возможности отделить реализацию метода, как это делается в С++.

На С# определение метода состоит из любых модификаторов (таких как специфи¬кация доступности), типа возвращаемого значения, за которым следует имя метода, затем — список аргументов, заключенный в скобки, и далее — тело метода, заключенное в фигурные скобки:

[модификаторы] тип_возврата ИмяМетода ( [параметры] ){// Тело метода }

Каждый параметр состоит из имени типа параметра и имени, по которому к нему можно обратиться в теле метода. Также, если метод возвращает значение, то оператор возврата должен быть использован вместе с возвращаемым значением для указания точки выхода. Например:

public bool IsSquare(Rectangle rect) {

return (rect.Height == rect.Width);}

Этот код использует один из базовых классов .NET, System. Drawing.Rectangle, представляющий прямоугольники.

Если метод не возвращает ничего, то в качестве типа возврата указывается void, поскольку вообще опустить тип возврата невозможно. Если же он не принимает аргументов, то все равно после имени метода необходимо указать пустые скобки (как в случае метода Main ()). При этом включать оператор возврата не обязательно — метод возвращает управление автоматически по достижении закрывающей фигурной скобки. Заметим, что метод может содержать столько операторов возврата, сколько тре¬буется:

public bool IsPositive(int value) {if (value < 0) return false;return true;}

12. Вызов членов класса.

В классах и структурах есть члены, представляющие их данные и поведение. Члены класса включают все члены, объявленные в этом классе, а также все члены (кроме конструкторов и деструкторов), объявленные во всех классах в иерархии наследования данного класса. Закрытые члены в базовых классах наследуются, но недоступны из производных классов.

В следующей таблице перечислены виды членов, которые могут содержаться в классе или в структуре : поля, константы, свойства, методы, события, операторы, индексаторы, конструкторы, деструкторы, вложенные типы.

13. Перегрузка конструкторов.

Как и методы, конструкторы также могут перегружаться. Это дает возможность конструировать объекты самыми разными способами:

Одна из самых распространенных причин для перегрузки конструкторов заключается в необходимости предоставить возможность одним объектам инициализировать другие, наподобие того, как в предыдущем примере инициализируются поля класса.

Когда приходится работать с перегружаемыми конструкторами, то иногда очень полезно предоставить возможность одному конструктору вызывать другой. В C# это дается с помощью ключевого слова this. Ниже приведена общая форма такого вызова: имя_конструктора(список_параметров1) :this(список_параметров2) {// ... Тело конструктора, которое может быть пустым}

В исходном конструкторе сначала выполняется перегружаемый конструктор, список параметров которого соответствует критериюсписок_параметров2, а затем все остальные операторы, если таковые имеются в исходном конструкторе.