Подробное рассмотрение. Переопределение членов
Обновлен: Ноябрь 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
Откройте проект Persons, созданный на предыдущем занятии. Если не удалось сохранить его, вернитесь к предыдущему занятию Создание класса на основе существующего класса. Применение наследования и выполните указанные действия.
В обозревателе решений выберите проект Persons.vb, затем в меню Вид выберите Код.
В редакторе кода измените объявление метода FullName следующим образом.
Public Overridable Function FullName() As String
В обозревателе решений выберите проект Players.vb, затем в меню Вид выберите Код.
В редакторе кода добавьте следующий фрагмент кода в класс.
Public Overrides Function FullName() As String FullName = FirstName & " " & LastName & ", #" & numberValue End Function
В обозревателе решений выберите узел Form1.vb в проекте PlayerTest, затем в меню Вид выберите Код.
В редакторе кода измените код события Button1_Click следующим образом.
MsgBox(player1.Position & " " & player1.FullName & _ " is now at bat.")
Измените код события Button2_Click следующим образом.
MsgBox(player2.Position & " " & player2.FullName & _ " is on deck.")
Нажмите клавишу F5, чтобы запустить программу. После запуска нажмите каждую кнопку, чтобы отобразить результаты.
Обратите внимание, что результаты отображаются аналогично прежнему варианту, даже если используется переопределенный метод FullName.
В меню Файл выберите Сохранить все.
Следующие действия
На этом занятии было рассмотрено переопределение метода. На следующем занятии вы узнаете об использовании коллекций для управления группами схожих объектов.
Следующее занятие: Использование коллекций для управления несколькими объектами
См. также
Задачи
Создание класса на основе существующего класса. Применение наследования