Возможно ли сделать такое, или что я делаю не так?
От: skydion  
Дата: 04.10.06 12:34
Оценка:
Всем привет,

В чем проблема следующего кода?


Public Class Form1
    Class S
        Public Sub MD()
            Debug.Print("S.MD")
        End Sub

        Public Sub MU()
            Debug.Print("S.MU")
        End Sub
    End Class

    Class B : Inherits S
        Public Overloads Sub MD()
            Debug.Print("B.MD")
        End Sub

        Public Overloads Sub MU()
            Debug.Print("B.MU")
        End Sub
    End Class

    Public V1 As New S
    Public V2 As New S
    Public V3 As New B

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        V1 = V2
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        V1 = V3
    End Sub

    Private Sub Form1_MouseDown1(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseDown
        V1.MD()
    End Sub
End Class


Почему у меня вызывается метод S.MD, а не B.MD если переменна V1 инициализирована значением V3
Re: Возможно ли сделать такое, или что я делаю не так?
От: Vipernn  
Дата: 04.10.06 14:41
Оценка:
1. Во-первых, в базовом классе должно быть


Public Overridable Sub MD()

и


Public Overridable Sub MU()

а в классе наследнике должно быть соответственно


Public Overrides Sub MD()

и


Public Overrides Sub MU()


2. А во вторых во-избежание возможных проблем с последовательностью вызова процедур, стоит тестируемый код поместить в одну процедуру
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.