Абстрактные классы

Последнее обновление: 30.10.2015

Среди классов выделяются базовые или абстрактные классы. Мы не можем создать объект или экземпляр абстрактного класса. Основное его назначение - предоставить базовый функционал для других классов-наследников. При определении абстрактных классов используется ключевое слово MustInherit:

Public MustInherit Class Car

End Class

Зачем нужны абстрактные классы? Допустим, мы разрабатываем программу для банка. В нашей программе мы можем определить три класса: Person, который описывает человека, Employee, который описывает сотрудника банка, и класс Client, который будет представлять клиента банка. Очевидно, что классы Employee и Client будут производными от класса Person. И так как все объекты будут представлять либо сотрудника банка, либо клиента, то напрямую мы от класса Person создавать объекты не будем. Поэтому имеет смысл сделать его абстрактным.

Абстрактный класс похож на обычный класс. Он также может иметь переменные, методы, конструкторы, свойства. Только от него напрямую нельзя образовывать объекты. Он представляет лишь базовый функционал, который потом реализуется в производных классах. Кроме того, абстрактный класс в отличие от обычных классов может содержать абстрактные методы и свойства. Такие методы и свойства помечаются ключевым словом MustOverride и не имеют никакой реализации:

Public MustOverride Sub Display()

При этом производный класс обязан переопределить и реализовать все абстрактные методы и свойства, которые имеются в базовом классе. Также следует учесть, что если класс имеет хотя бы одно абстрактное свойство или метод, то он должен быть определен как абстрактный. Теперь изменим нашу структуру классов и определим в ней абстрактный класс Person, в котором будет абстрактный метод Display:

Public MustInherit Class Person

    Public Property FirstName() As String
    Public Property LastName() As String
    'Абстрактный метод
    Public MustOverride Sub Display()

    Public Sub New(fName As String, lName As String)
        FirstName = fName
        LastName = lName
    End Sub

End Class

Public Class Employee
    Inherits Person

    Public Property Bank As String

    Public Overrides Sub Display()
        Console.WriteLine(FirstName & " " & LastName & " works in " & Bank)
    End Sub

    Public Sub New(fName As String, lName As String, _bank As String)
        MyBase.New(fName, lName)
        Bank = _bank
    End Sub

End Class

Public Class Client
    Inherits Person

    Public Property Bank As String

    Public Overrides Sub Display()
        Console.WriteLine(FirstName & " " & LastName & " has an account in bank" & Bank)
    End Sub

    Public Sub New(fName As String, lName As String, _bank As String)
        MyBase.New(fName, lName)
        Bank = _bank
    End Sub

End Class
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850