Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Дополн. к лекции 2,3.doc(программирование).doc
Скачиваний:
12
Добавлен:
10.06.2015
Размер:
443.39 Кб
Скачать
      1. Наследование

Класс может наследовать от другого класса. Это означает, что он включает все члены — открытые и закрытые — исходного класса, а также дополнительные определяемые им члены. Исходный класс называется базовым классом, а новый класс —производным классом. Производный класс создается для представления особых возможностей базового класса.

Наследование ускоряет программирование. Для нового класса нужно программировать только дополнения, которые он имеет.

Синтаксис наследования

КлассПотомок : КлассПредок;

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

public class Кошка : Животное

{

public void Дополнительный()

{

// Здесь команды

}

}

Нотация Кошка : Животное означает, что класс Кошка наследует от класса Животное и что Кошка также имеет метод MoveLeftи три закрытые переменные: Размер, Скорость и Сила. Если затем определяется следующий потмок - класс СиамскаяКошка, который наследует от класса Кошка, то он будет содержать все члены класса Кошка, а также все члены класса Животное.

      1. Полиморфиэм

Полиморфизм – возможность использования методов с одинаковым именем, но с разным содержанием.

Полиморфизмом дает возможность производного класса изменять или переопределять методы, которые он наследует от базового класса. Эта функция используется, если в методе, который имеет отличия либо не определен в базовом классе, нужно выполнить какие-то особые действия.

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

Например, поскольку метод Животное.MoveLeft должен быть общим, чтобы подходить для всех животных, он является, возможно, очень простым, как например "изменение положения так, чтобы голова животного была в направлении X". Однако для класса Кошка этого может быть недостаточно. Может потребоваться указать, как Кошка двигает лапами и хвостом при поворотах. И если класс Рыба или класс Птица уже определен, возможно, потребуется переопределить метод MoveLeft разными способами для каждого из классов.

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

      1. Конструкторы

В каждом классе существует конструктор — метод с тем же именем, что и у класса. Конструктор вызывается при создании объекта на базе определения класса. Обычно конструкторы задают начальные значения переменных, определенных в классе. Конструкторы не используются, если начальным значением для числовых типов данных будет ноль, "false" для логических типов данных или null для ссылочных типов, поскольку эти типы данных инициализируются автоматически.