Existuje lepší způsob, jak volat každé metody odvozené objektu pro základní třídy?

hlasů
1

Mám základní třídu, kde jsem odvodit několik tříd. Mám další třídu, která využívá všechny ty odvozené třídy jinak. Nicméně chci volat Update()metodu (zděděnou ze základní třídy) na každém odvozené třídy. Existuje jednoduchý způsob, jak to udělat, nebo musím udělat něco jako:

dim a As Derived1
a.Update

dim b As Derived2
b.Update

etc...
Položena 26/08/2009 v 23:17
zdroj uživatelem
V jiných jazycích...                            


2 odpovědí

hlasů
5

Myslím, že nejlepší způsob, jak to udělat, je, aby odvozené objekty v seznamu nějakého druhu, a pak iteraci přes ně volat Update.

V pseudo-kódu:

foreach BaseClass item in {a, b, ...}:
    item.Update
Odpovězeno 26/08/2009 v 23:25
zdroj uživatelem

hlasů
1

Můžete to udělat přes polymorfismus s volání funkce, který je předán základní třídy (pseudo-kód):

Dim Dev1 as Derived1 '// This is derived from the class BaseClass
Dim Dev2 as Derived2 '// This is derived from the class BaseClass

CallUpdate(Dev1)
CallUpdate(Dev2)

Function CallUpdate(BaseClass bc)
    bc.Update()
End Function
Odpovězeno 26/08/2009 v 23:33
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more