Xpoint
   [напомнить пароль]

VB Наследование

Метки: [без меток]
2010-07-30 20:37:21 [обр] Alexey V.Zelenin(0/8)[досье]

Странная встретилась фигня... Предположим, есть класс

Class ParamBase
  Public Overridable Function Accept() As Boolean
    Return True
  End Function
End Class

и его потомок

Class ParamChild
  Inherits ParamBase

  Public Overloads Function Accept() As Boolean
    Return False
  End Function
End Class

И дальше при использовании в программе

Dim param As ParamBase = New ParamChild()
Dim d As Boolean = param.Accept()

Получаем... True, как будто метод не был перегружен. Чтобы получить перегруз, надо использовать

Dim param As ParamBase = New ParamChild()
Dim d As Boolean = CType(param, ParamChild).Accept()

Интересно, это у меня руки кривые или где?

спустя 1 час [обр] Алексей Полушин(5/231)[досье]
Public Overrides Function Accept() As Boolean
спустя 4 минуты [обр] Алексей Полушин(5/231)[досье]
Это в наследнике - не Overloads а Overrides
спустя 35 минут [обр] Alexey V.Zelenin(0/8)[досье]
Ок, спасибо, понятно.
Правда, уже переписал без полиморфизма — но на будущее надо знать о таком "финте".
Powered by POEM™ Engine Copyright © 2002-2005