C#. Введение в классы и объекты. Массивы объектов. Интерфейс IComparable

Страницы работы

Содержание работы

Программирование Тема 4.3 C#.Введение в классы и объекты

1

C#. Классы и объекты

  • Описание класса:
  • [ Модификатор доступа ] class ИмяКласса
  • { // члены класса – поля и методы
  • Модификатор доступа Тип имяПоля [ = значение ];
  • Модификатор доступа Тип имяМетода (Параметры) {
  • // тело метода }
  • }
  • Модификаторы доступа и доступ для членов класса:
    • public – общий (неограниченный) доступ;
    • protected – доступ ограничен в пределах данного класса и классов, производных от данного;
    • internal - доступ ограничен сборкой, в которой находится данный класс;
    • protected internal - доступ ограничен в пределах данного класса и классов, производных от данного, или - доступ ограничен сборкой, в которой находится данный класс;
    • private - доступ ограничен в пределах данного класса;
  • Доступом по умолчанию для членов класса является private

2

C#. Классы и объекты

  • Класс – это конструкция языка программирования, которая объединяет в себе переменные и функции (методы), которая может определять новый тип данных, который можно использовать для создания объектов этого типа.
  • В C# как и в Java объявление класса совмещено с его определением, то есть методы класса нужно реализовывать (писать код тела) сразу же при их описании. Поля класса могут инициализироваться при объявлении.
  • Модификаторы доступа - это ключевые слова, которые определяют доступность класса или его членов.
  • В языке C# предусмотрены следующие модификаторы доступа: public, protected, internal, protected internal, private.
  • Для членов класса (полей и методов) разрешено использование всех указанных выше модификаторов.
  • Модификатор доступа должен появляться перед каждым отдельным полем или методом (иначе данный элемент будет иметь уровень доступа private).
  • Поля и методы класса, помеченные как public,  доступны через объект по имени из классов текущей сборки и из классов других сборок (если класс имеет уровень доступа public).
  • Поля и методы класса, помеченные как protected, доступны по имени только из методов своего класса и классов потомков.
  • Поля и методы класса, помеченные как protected internal, доступны по имени только из методов своего класса и классов потомков, а также доступны через объект по имени для любого класса текущей сборки.
  • Private-поля и private методы доступны по имени только из методов своего класса.
  • Поля и методы класса, помеченные как internal, доступны по имени только из методов своего класса и классов потомков текущей сборки, а также доступны через объект по имени для любого класса текущей сборки.
  • Доступ для классов верхнего уровня (классов, не вложенных в другие классы) ограничивается модификаторами internal и public (мо умолчанию – internal).
  • Неявным родителем любого класса в C# является класс System.Object, поэтому в любом классе доступны его методы, например метод ToString(), который преобразует объект в строку.

3

C#. Классы и объекты

  • Создание объектов:
  • ИмяКласса имяОбъекта; // объявление ссылки на объект
  • имяОбъекта = new ИмяКласса([ параметры конструктора]);
  • Доступ к полям и методам объекта:
    • имяОбъекта.имяПоля = значение;
    • ИмяОбъекта.имяМетода(параметры);
  • Варианты конструкторов:
    • Конструкторы с параметрами;
    • Конструкторы без параметров (конструкторы по умолчанию).
  • Специальная ссылка this

4

C#. Классы и объекты

  • Объект в С# как и в Java – это экземпляр класса. Класс как и в Java так и в С# является ссылочным типом данных, поэтому механизм создания объектов одинаков:
    1. Создается ссылочная переменная в стеке для хранения адреса будущего объекта;
    2. В динамической памяти (куче) выделяется пространство для размещения объекта со всеми его полями;
    3. Поля объекта инициализируются значениями по умолчанию;
    4. Выполняется явная инициализация полей объекта, если она была задана программистом;
    5. Выполняется конструктор;
    6. Ссылка на созданный объект (его адрес) записывается в соответствующую ссылочную переменную.
  • В С# доступ к элементам объекта вне класса, которому принадлежит объект, такой же как и в Java - используется операция «точка» после переменной-ссылки на объект, если конечно этот доступ разрешен модификаторами доступа. Если элементы объекта имеют модификатор доступа private, то доступ к ним осуществляется через public-методы.
  • Идеология конструкторов в С# мало чем отличается от конструкторов в С++ и Java. Конструктор – это метод, имя которого совпадает с именем класса и который вызывается автоматически при создании объекта. Типы конструкторов в С# те же что и в Java: конструкторы с параметрами и конструкторы без параметров (конструкторы по умолчанию).
  • Ссылка this – это скрытый параметр метода, который хранит ссылку на текущий объект, который вызывает метод.
  • Как и в Java в С# уничтожение неиспользуемых объектов осуществляется автоматически «сборщиком мусора», специальным механизмом CLR. В C# можно создать метод вида ~имя_класса(), который полностью аналогичен методу finalize() в Java, то есть является завершителем, который вызывается механизмом CLR перед уничтожением объекта. В С# метод вида ~имя_класса() также называют деструктором.

Похожие материалы

Информация о работе