Спецификаторы метода.
27
28.Одномерные массивы. Класс System.Array Создание одномерного массива выполняется в такой последовательности:- сначала происходит объявление ссылочной переменной на массив;- потом происходит выделение памяти под необходимое количество элементов, а ссылочной переменной, объявленной ранее, присваивается адрес нулевого элемента данного массива. Все элементы массива должны иметь один и тот же тип данных, следовательно базовый тип, присвоенный при объявлении массива, будут иметь все элементы данного массива. А количество элементов массива определяют его размер.Для вызова статического метода в программном коде нужно придерживаться следующего примера - Array.Sort(имя_массива), где Array – класс, в котором содержится метод Sort, который в свою очередь будет сортировать ваш массив с именем имя_массива.Обращение к свойству или вызов экземплярного метода производится через обращение к экземпляру класса, например, имя_массива.свойство или имя_массива.экземплярный_метод(элемент_массива).
29. Класс System.String. Класс System.String содержит методы, применяемые для манипуляций со строками. С помощью методов этого класса мы можем определить длину строки, выполнить поиск подстрок, изменить регистр символов в строке, сравнить две строки, разделить строки на подстроки и выполнить ряд других действий.После того как экземпляр класса String создан, он не может быть изменен — все методы класса, которые изменяют содержимое стоки, возвращают новый экземпляр данного класса. Класс StringBuilder, находящийся в пространстве имен System.Text, используется для создания строк, содержимое которых может быть модифицировано. В Microsoft.NET первый символ строки имеет нулевой индекс.
30. Виртуальный метод.Виртуальный метод (виртуальная функция) — в объектно-ориентированном программировании метод (функция) класса, который может быть переопределён в классах-наследниках так, что конкретная реализация метода для вызова будет определяться во время исполнения. Таким образом, программисту необязательно знать точный тип объекта для работы с ним через виртуальные методы: достаточно лишь знать, что объект принадлежит классу или наследнику класса, в котором метод объявлен. Виртуальные методы — один из важнейших приёмов реализации полиморфизма. Они позволяют создавать общий код, который может работать как с объектами базового класса, так и с объектами любого его класса-наследника. При этом базовый класс определяет способ работы с объектами и любые его наследники могут предоставлять конкретную реализацию этого способа. В некоторых языках программирования, например в Java, нет понятия виртуального метода, данное понятие следует применять лишь для языков, в которых методы родительского класса не могут быть переопределены по умолчанию, а только с помощью некоторых вспомогательных ключевых слов. В некоторых же (как, например, в Python), все методы — виртуальные. Базовый класс может и не предоставлять реализации виртуального метода, а только декларировать его существование. Такие методы без реализации называются «чистыми виртуальными» (перевод англ. purevirtual) или абстрактными. Класс, содержащий хотя бы один такой метод, тоже будет абстрактным. Объект такого класса создать нельзя (в некоторых языках допускается, но вызов абстрактного метода приведёт к ошибке). Наследники абстрактного класса должны предоставить реализацию для всех его абстрактных методов, иначе они, в свою очередь, будут абстрактными классами. Для каждого класса, имеющего хотя бы один виртуальный метод, создаётся таблица виртуальных методов. Каждый объект хранит указатель на таблицу своего класса. Для вызова виртуального метода используется такой механизм: из объекта берётся указатель на соответствующую таблицу виртуальных методов, а из неё, по фиксированному смещению, — указатель на реализацию метода, используемого для данного класса.
Интерфейс.
Интерфейсы позволяют определять характеристики или возможности действий и применять их к классам независимо от иерархии последних.Допустим, у вас есть дистрибьюторское приложение, сущности которого можно упорядочить. Среди них могут быть классы Customer, Supplier и Invoice. Некоторые другие, скажем, MaintenanceView или Document, упорядочивать не надо. Как упорядочить только выбранные вами классы? Очевидный способ — создать базовый класс с именем типа Serializable. Но у этого подхода есть крупный минус. Одна ветвь наследования здесь не подходит, так как нам не требуется наследование всех особенностей поведения. С# не поддерживает множественное наследование, так что невозможно произвести данный класс от нескольких классов. А вот интерфейсы позволяют определять набор семантически связанных методов и свойств, способные реализовать избранные классы независимо от их иерархии.Концептуально интерфейсы представляют собой связки между двумя в корне отличными частями кода. Иначе говоря, при наличии интерфейса и класса, определенного как реализующий данный интерфейс, клиентам класса дается гарантия, что у класса реализованы все методы, определенные в интерфейсе. Скоро вы это поймете на примерах.