Есть ли лучший способ вызвать метод каждого производного объекта для базового класса? - PullRequest
1 голос
/ 27 августа 2009

У меня есть базовый класс, где я получаю несколько классов. У меня есть другой класс, который использует все эти производные классы по-другому. Однако я хочу вызвать метод Update() (унаследованный от базового класса) для каждого производного класса. Есть ли простой способ сделать это, или я должен сделать что-то вроде:

dim a As Derived1
a.Update

dim b As Derived2
b.Update

etc...

Ответы [ 2 ]

5 голосов
/ 27 августа 2009

Я думаю, что лучший способ сделать это - сохранить производные объекты в каком-либо списке, а затем перебрать их, чтобы вызвать Update.

В псевдокоде:

foreach BaseClass item in {a, b, ...}:
    item.Update
1 голос
/ 27 августа 2009

Это можно сделать с помощью полиморфизма с помощью вызова функции, переданного базовому классу (псевдокод):

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
...