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

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

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

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

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

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

Наследование из существующих классов

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

Class DerivedClass
    Inherits BaseClass
End Class

Для нового класс DerivedClass можно создать экземпляры, доступ к его свойствам и методам осуществляется так же, как и для BaseClass. При этом к нему также можно добавить новые свойства и методы, специфичные для нового класса. Например, рассмотрим класс Persons, созданный на прошлых занятиях.

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

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

Для создания производного класса

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

  2. В Обозревателе решений выберите узел проекта Persons.

  3. В меню Проект выберите Добавить класс.

  4. В диалоговом окне Добавление нового элемента введите Players в поле Имя,, а затем нажмите кнопку Добавить.

    В проект добавится новый модуль класса.

  5. В редакторе кода добавьте следующий код после строки Public Class Players.

    Inherits Persons
    
  6. Добавьте следующий код для определения двух новых свойств.

    Private numberValue As Integer
    Private positionValue As String
    Public Property Number() As Integer
        Get
            Number = numberValue
        End Get
        Set(ByVal value As Integer)
            numberValue = value
        End Set
    End Property
    Public Property Position() As String
        Get
            Position = positionValue
        End Get
        Set(ByVal value As String)
            positionValue = value
        End Set
    End Property
    
  7. В меню Файл выберите Сохранить все.

Тестирование класса Players

Теперь создан класс Players, производный от класса Persons. В следующей процедуре предстоит создать новую программу для проверки класса Players.

Чтобы создать тестовый проект для класса

  1. В меню Файл выберите команду Добавить, затем выберите пункт Создать проект.

  2. В диалоговом окне Добавить новый проект в области Шаблоны выберите элемент Приложение Windows.

  3. В поле Имя введите PlayerTest и нажмите кнопку ОК.

  4. В Обозреватель решений добавляется новый проект Windows Forms, и появляется новая форма.

  5. В Обозревателе решений выберите проект PlayerTest, а затем в меню Проект выберите пункт Назначить запускаемым проектом.

  6. В Обозревателе решений выберите проект PlayerTest, и затем в меню Проект выберите пункт Добавить ссылку.

    Откроется диалоговое окно Добавить ссылку.

  7. Перейдите на вкладку Проекты и затем выберите Persons, после чего нажмите кнопку OK.

  8. Дважды щелкните на форме, чтобы открыть редактор кода, а затем введите следующее объявление после строки Public Class Form1.

    Dim player1 As New Persons.Players
    Dim player2 As New Persons.Players
    
  9. Этот код объявляет два новых экземпляра класса Players.

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

Чтобы проверить производный класс

  1. В Обозревателе решений выберите Form1 в проекте PlayerTest, а затем в меню Вид выберите Код.

  2. В редакторе кода добавьте следующий код к процедуре события Form1_Load.

    With player1
        .FirstName = "Andrew"
        .LastName = "Cencini"
        .Number = 43
        .Position = "Shortstop"
    End With
    With player2
        .FirstName = "Robert"
        .LastName = "Lyon"
        .Number = 11
        .Position = "Catcher"
    End With
    
  3. В Обозревателе решений выберите Form1 в проекте PlayerTest, а затем в меню Вид выберите Конструктор.

  4. Из Панели элементов перетащите на форму два элемента управления Button.

  5. Выберите первый элемент управления Button, а затем в окне Свойства установите его свойство Text равным At Bat.

  6. Выберите второй элемент управления Button и в окне Свойства установите его свойство Text равным On Deck.

  7. Дважды щелкните первую кнопку (At Bat), чтобы открыть редактор кода, затем добавьте следующий код в обработчик событий Button1_Click.

    MsgBox(player1.Position & " " & player1.FullName & ", #" & _
      CStr(player1.Number) & " is now at bat.")
    

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

  8. В обработчик событий Button2_Click добавьте следующий код.

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

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

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

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

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

См. также

Основные понятия

Основы наследования