Напишу примерный код. Нужно чтобы в А всё работало без изменений.
А:
Private Sub makenewmonster(name as String)
If name="1" Then
Dim q As New Monster1
Monsters.Add(q)
Else
Dim q As New Monster2
Monsters.Add(q)
End If
End Sub
Private Sub checkmonsters()
For Each m As Monster In Monsters
If m.Life=0 Then
MsgBox("Монстр " & m.Name & " убит")
End If
Next
End Sub
B:
Public Class Monster
Public Name as string
Public Life as Byte
Public Overridable Sub GetHurt(hp as Byte)
Life=Life-hp
End Sub
End Class
Public Class Monster1
Inherits Monster
Public Overrides Sub GetHurt(hp as Byte)
Life=Life-hp
Life=Life+1
End Sub
End Class
Public Class Monster2
Inherits Monster
End Class