Подробное рассмотрение. Переопределение членов

Обновлен: Ноябрь 2007

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

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

Например, можно создать класс Truck, производный от класса Car, который содержит метод StartEngine. Если грузовик имеет дизельный двигатель, процесс запуска двигателя может отличаться. В этом случае следует переопределить метод StartEngine для большего соответствия характеристикам грузовика.

Переопределение свойств и методов

По умолчанию свойства и методы в классе не могут быть переопределены. Чтобы разрешить переопределение свойства или метода в производном классе, следует пометить их как переопределяемые. Для этого необходимо объявить свойство или метод с ключевым словом Overridable.

Public Overridable Property EngineType As String

Public Overridable Sub StartEngine(ByVal EngineType As String)

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

Public Overrides Property EngineType As String

Public Overrides Sub StartEngine(ByVal EngineType As String)

В классе Players, созданном на предыдущем занятии, может потребоваться переопределить метод FullName, чтобы включить номер игрока и исключить код, возвращающий отчество.

Практическое задание

Переопределение метода FullName

  1. Откройте проект Persons, созданный на предыдущем занятии. Если не удалось сохранить его, вернитесь к предыдущему занятию Создание класса на основе существующего класса. Применение наследования и выполните указанные действия.

  2. В обозревателе решений выберите проект Persons.vb, затем в меню Вид выберите Код.

  3. В редакторе кода измените объявление метода FullName следующим образом.

    Public Overridable Function FullName() As String
    
  4. В обозревателе решений выберите проект Players.vb, затем в меню Вид выберите Код.

  5. В редакторе кода добавьте следующий фрагмент кода в класс.

    Public Overrides Function FullName() As String
        FullName = FirstName & " " & LastName & ", #" & numberValue
    End Function
    
  6. В обозревателе решений выберите узел Form1.vb в проекте PlayerTest, затем в меню Вид выберите Код.

  7. В редакторе кода измените код события Button1_Click следующим образом.

    MsgBox(player1.Position & " " & player1.FullName & _
          " is now at bat.")
    
  8. Измените код события Button2_Click следующим образом.

    MsgBox(player2.Position & " " & player2.FullName & _
          " is on deck.")
    
  9. Нажмите клавишу F5, чтобы запустить программу. После запуска нажмите каждую кнопку, чтобы отобразить результаты.

    Обратите внимание, что результаты отображаются аналогично прежнему варианту, даже если используется переопределенный метод FullName.

  10. В меню Файл выберите Сохранить все.

Следующие действия

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

Следующее занятие: Использование коллекций для управления несколькими объектами

См. также

Задачи

Создание класса на основе существующего класса. Применение наследования

Ссылки

Overridable

Overrides