2011-07-11 1 views
0

Prenons l'exemple suivant:Que se passe-t-il si une méthode de base appelle une méthode substituée dans VB?

Public Class ParentClass 
    Public Sub GenerateReport 
     Dim Col As Collection 
     Col = GetItemCollection() 
    End Sub 

    Public Overridable Function GetItemCollection() As Collection 
     GetItemCollection = New Collection 
     GetItemCollection.Add("1") 
     GetItemCollection.Add("2") 
     GetItemCollection.Add("3") 
    End Function 
End Class 

Public Class ExtendedClass 
    Inherits ParentClass 

    Public Overrides Function GetItemCollection() As Collection 
     GetItemCollection = New Collection 
     GetItemCollection.Add("A") 
     GetItemCollection.Add("B") 
     GetItemCollection.Add("C") 
    End Function 
End Class 

Public Sub Main() 
    Dim cls As New ExtendedClass 
    cls.GenerateReport() 
End Sub 

Lorsque Main() appelle cls.GenerateReport(), est la Col variables va être une collection de chiffres ou de lettres? J'espère qu'il reconnaîtra que cls est une instance de ExtendedClass et appelle la méthode substituée et renvoie les lettres.

Répondre

1

Ce sera une collection de lettres comme vous l'avez fait remplacer la méthode. Cependant, où avez-vous déclaré le GetItemCollection? Vous avez toujours besoin d'une variable d'instance.

+0

GetItemCollection est déclaré car il s'agit du nom de la fonction et peut être utilisé en lui-même en tant qu'objet de collection. – jwatts1980

+0

Je ne connais pas vb.net. Quoi qu'il en soit, la méthode de la classe dérivée sera appelée. – Femaref

Questions connexes