Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Екзамен з комп. арх..doc
Скачиваний:
4
Добавлен:
17.09.2019
Размер:
449.02 Кб
Скачать

7. Методи в c#: модифікатори доступу, передача параметрів, перевантаження, наслідування.

Метод представляет собой блок кода, содержащий набор инструкций. Программа инициирует выполнение операторов, вызывая метод и задавая необходимые аргументы метода. В C# все инструкции выполняются в контексте метода. Метод Main является точкой входа для каждого приложения C#, и вызывается он средой CLR при запуске программы.(msdn)

Модификаторы доступа:

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

private: Доступ к типу или члену можно получить только из кода в том же классе или структуре.

protected: Доступ к типу или члену можно получить только из кода в том же классе или структуре, или в производном классе.

internal: Доступ к типу или члену возможен из любого кода в той же сборке, но не из другой сборки.

protected internal: Доступ к типу или члену возможен из любого кода в той же сборке, или из производного класса в другой сборке.

public class Bicycle

{

public void Pedal() { }

}

Передача параметров:

В C# параметры могут быть переданы либо по значению, либо по ссылке. Передача параметров по ссылке позволяет изменять и сохранять измененные значения параметров членов функций, методов, свойств, индексаторов, операторов и конструкторов. Для передачи параметра по ссылке используйте ключевое слово ref или out. Ref и out отличаются тем, что ref требует инициализации переменной перед её отдачей. Эти методы идентичны для компиляции.

// Passing by value

static void Square(int x)

{

// code...

}

// Passing by reference

static void Square(ref int x)

{

// code...

}

Перегрузка:

Перегрузка методов позволяет программистам на С# многократно использовать одни и те же имена методов, меняя лишь передаваемые аргументы. Это применяется, когда нужно иметь единое имя метода, поведение которого немного различается, в зависимости от переданных параметров.

public void WriteEntry(string entry)

{

Console.WriteLine(entry);

}

public void WriteEntry(int resourceld)

{

Console.WriteLine("получить строку no id ресурса и вывести в log")

}

WriteEntry("Строка один");

WriteEntry(42) ;

Наследование:

Наследование, вместе с инкапсуляцией и полиморфизмом, является одной из трех основных характеристик (или базовых идей) объектно-ориентированного программирования. Наследование позволяет создавать новые классы, которые повторно используют, расширяют и изменяют поведение, определенное в других классах. Класс, члены которого наследуются, называется базовым классом, а класс, который наследует эти члены, называется производным классом.

7. Методи в c#: модифікатори доступу, передача параметрів, перевантаження, наслідування.(Второй вариант)

Метод представляет собой блок кода, содержащий набор инструкций. Программа инициирует выполнение операторов, вызывая метод и задавая необходимые аргументы метода. В C# все инструкции выполняются в контексте метода. Метод Main является точкой входа для каждого приложения C#, и вызывается он средой CLR при запуске программы.

Методы объявляются в классе или в структуре путем указания уровня доступа, например public или private, необязательных модификаторов, например abstract или sealed, возвращаемого значения, имени метода и списка параметров этого метода. Все вместе эти элементы образуют сигнатуру метода.

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

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

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

Ref ключевое слово указывается в параметре типа значения, если необходимо, чтобы вызванный метод окончательно изменил значение переменных, используемых в качестве параметров. Таким образом, вместо передачи значения переменной, используемой в вызове, передается ссылка на саму переменную. Затем метод использует ссылку, так что изменения параметра во время выполнения метода сохраняются в начальной переменной, используемой в качестве параметра метода.

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

Существование в классе методов с одним и тем же именем называется перегрузкой, а сами одноименные методы называются перегруженными. Перегрузка методов полезна, когда требуется решать подобные задачи с разным набором аргументов.

Пример - нахождение S треуг. S можно вычислить по трем сторонам, по двум углам и стороне, по двум сторонам и углу между ними и при многих других наборах аргументов. Удобно во всех случаях использовать одно имя, например Square, и всегда, когда нужно вычислить площадь, не задумываясь, вызывать метод Square, передавая ему известные в данный момент аргументы.

Когда базовый класс объявляет метод как виртуальный, производный класс может переопределить метод с помощью своей собственной реализации. Если базовый класс объявляет член как абстрактный, то этот метод должен быть переопределен в любом неабстрактном классе, который прямо наследует от этого класса. Если производный класс сам является абстрактным, то он наследует абстрактные члены, не реализуя их. Абстрактные и виртуальные члены являются основой для полиморфизма, который является второй основной характеристикой объектно-ориентированного программирования.