|
|
|
Есть класс А, в нем
public overloadable sub GO()
Также есть приватный метод, который вызывает его. Есть класс В, потомок А, в нем метод GO() перекрыт.
Проблема: при создании объекта класса В вызывается, соотвественно, приватный метод из А, но он вызывает не перекрытый метод GO(), а свой, из класса А. Что делать?
Базовый класс:
class A
public overridable sub GO()
msgbox 1
end sub
public sub Do()
...
call PrivSub()
...
end sub
private sub PrivSub()
...
GO()
...
end sub
end class 'A
Унаследованный:
class B
public overriden sub GO()
msgbox 2
end sub
end class 'B
Использование:
dim d as new B()
d.Do()
В результате выведется сообщение "1", а не "2". Вот работающий код:
Imports System
Public Class MyApplication
Public Shared Sub Main()
dim d as new B()
d.Doo()
Console.ReadLine()
End Sub
End Class
Class A
public overridable sub GOO()
Console.WriteLine("A")
end sub
public sub Doo()
call PrivSub()
end sub
private sub PrivSub()
GOO()
end sub
End Class
class B
Inherits A
public overrides sub GOO()
Console.WriteLine("B")
end sub
end class
|
|
|
|
|
|
|