Visual Basic, .NET, ASP, VBScript
 
   
   
     
   
 


Есть класс А, в нем

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
 
     

   
   
     
  VBNet рекомендует  
   
     
   
   
     
   
   
     

© Copyright 2002-2011 VBNet.RU | Пишите нам