Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Obektno-orientirovannoe_programmirovanie.doc
Скачиваний:
14
Добавлен:
19.08.2019
Размер:
271.36 Кб
Скачать

22. Классы, закрытые для наследования в c#

В C# существует возможность создать классы наследование от которых невозможно. Делается это при помощи ключевого слова sealed (запечатанный).

public sealed class SealedClass

{…}

Структурные типы данных объявлены sealed неявно, явное объявление структуры как sealed является ошибкой.

23. Модификатор new в c#

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

public class First

{public void f1() {…}}

public class Second:First

{public void f2() {…}}

Second s1 = new Second();

s1.f2();

s1.f1();

Иногда может возникнуть необходимость в производном классе переопределять какое-либо поле, метод или вложенное описание типа.

public class First

{public void f1(){…}}

public class Second:First

{new public void f1() {…}}

В этом случае в производном классе объявление метода происходит с помощью модификатора new.

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

24.Полиморфизм в c#.

Полиморфизм – это когда нечто одно имеет много форм. В программировании - это возможность по интерпретации связанных объектов одинаковым образом с одной стороны и способность динамически вызывать методы объектов классов, основываясь на их типе. В программировании существуют 2 типа полиморфизма: 1) для конкретного случая (ad hoc) – полиморфные объекты никак не связаны с синтаксическими конструкциями. Такой тип полиморфизма используется в ЯП, которые не поддерживают классическое наследование (VB, VB.NET). Полиморфизм достигается за счет объявления у разных классов методов с одинаковой сигнатурой (заголовком). Для реализации такого полиморфизма необходима поддержка позднего связывания. Позднее связывание – тип объектов определяется в момент выполнения программы, в отличие от раннего связывания – тип объекта определяется на этапе компиляции. Иногда используется и динамическое связывание. Пример: Lexus и ВАЗ-2110. 2) Классический полиморфизм м.б. реализован в тех ЯП, которые поддерживают классическое наследование. В этом случае возможности производных классов определяются при описании класса, а затем реализация методов перекрываются в потомках. При этом вариант метода, который будет вызван, определяется автоматическим механизмом.

Public class Square

{ protected int side=2;

Public int Area()

{return side*side;}

Public void Print()

{ConsoleWriteline(“S={0}”, Area());}

}}

Public class Cube:Square

{new public int Area()

{return 6*side*side;}

}

Square s = new Square();

S.Print();

Cube c = new Cube();

c.Print();

Результаты: s=4, s=4.

Любой вызов функции – передача управления по какому-либо адресу. В функции Print() адрес перехода на функцию Area вычисляется в момент компиляции и естественно, это адрес функции из этого же класса.