Иллюстрированный самоучитель по VB.NET




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


В нашем примере, где программист автоматически получает 6-процентное повышение зарплаты вместо 5-процентного, необходимо изменить поведение метода RaiseSalary и отразить в нем автоматическую надбавку. Это называется переопределением функции.

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

В отличие от многих объектно-ориентированных языков синтаксис VB .NET четко показывает, что метод базового класса должен переопределяться в производном классе. Для этого используются два специальных ключевых слова.

  • Ключевое слово Overridable указывается в базовом классе для методов, которые могут переопределяться производными классами.

  • Ключевое слово Overrides указывается в производном классе для переопределяемых методов.

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

    Ниже приведен примерный вид базового класса Employee с методом RaiseSalary, который может переопределяться в производных классах Programmer, Manager и т. д. Ключевые строки кода выделены жирным шрифтом:

    Option Strict On Public Class Employee

    Private m_Name As String

    Private m_Salary As Decimal

    Private Const LIMIT As Decimal = 0.1D

    Public Sub New(ByVal theName As String,ByVal curSalary As Decimal)

    m_Name =theName

    m_Salary =curSalary End Sub

    Public Readonly Property TheName()As String

    Get

    Return m_Name

    End Get End Property

    Public Readonly Property Salary()As Decimal

    Get

    Return MyClass.m_Salary

    End Get End Property

    Public Overridable Overloads Sub RaiseSalary(ByVal Percent As Decimal)

    If Percent > LIMIT Then

    ' Операция запрещена - необходим пароль

    Console.WriteLine('NEED PASSWORD TO RAISE SALARY MORE " & _

    "THAN LIMIT!!!!") Else

    m_Salary =(1 + Percent) * m_Salary

    End If

    End Sub

    Public Overridable Overloads Sub RaiseSalary(ByVal Percent As _

    Decimal.ByVal Password As String) If Password ="special"Then

    m_Salary =(1 + Percent) * m_Salary




    Содержание  Назад  Вперед