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

5.Операции класса: перегрузка операции преобразования типа.

Операции преобразования типов

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

explicit operator целевой_тип (параметр) //явное преобразование

implicit operator целевой_тип (параметр) //неявное преобразование

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

Неявное преобразование выполняется автоматически в следующих ситуациях:

  1. при присваивании объекта переменной целевого типа;

  2. при использовании объекта в выражении, содержащем переменные целевого типа;

  3. при передаче объекта в метод параметра целевого типа;

  4. при явном приведении типа.

Явное преобразование выполняется при использовании операции приведения типа.

При определении операции преобразования типа следует учитывать следующие особенности:

  1. тип возвращаемого значения (целевой_тип) включается в сигнатуру объявителя операции;

  2. ключевые слова explicit и implicit не включаются в сигнатуру объявителя операции.

public static implicit operator string(Triangle t)

{ return " ( " + t.a.ToString() + " , " + t.b.ToString() + "," + t.c.ToString() + " ) "; }

public static implicit operator Triangle(string s)

{ Triangle t = new Triangle(0, 0, 0);

string[] str = s.Split(';');

t.a = int.Parse(str[0]);

t.b = int.Parse(str[1]);

t.c = int.Parse(str[2]);

return t; }

6. Наследование классов, пример реализации механизма наследования.

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

Наследование применяется для следующих взаимосвязанных целей:

  1. исключения из программы повторяющихся фрагментов кода;

  2. упрощения модификации программы;

  3. упрощения создания новых программ на основе существующих.

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

Класс в С# может иметь произвольное количество потомков и только одного предка. При описании класса имя его предка записывается в заголовке класса после двоеточия. Если имя предка не указано, предком считается базовый класс всей иерархии System.Object. Синтаксис наследования:

[атрибуты] [спецификаторы] class имя_класса [: предки]

{ тело_класса}

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

class DemoPoint //базовый класс

{ public int x;

public int y;

public void Show()

{ Console.WriteLine("({0}, {1})", x, y); }}

class DemoLine : DemoPoint //производный класс

{ public int xEnd;

public int yEnd;

public void Show()

{ Console.WriteLine("({0}, {1})-({2}, {3})", x, y ,xEnd, yEnd);}}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]