【问题标题】:Is there a better way to call each derived object's method for a base class?有没有更好的方法来调用基类的每个派生对象的方法?
【发布时间】:2010-11-23 04:43:37
【问题描述】:

我有一个派生多个类的基类。我有另一个类以不同的方式使用所有这些派生类。但是,我想在每个派生类上调用 Update() 方法(从基类继承)。有没有一种简单的方法可以做到这一点,还是我必须这样做:

dim a As Derived1
a.Update

dim b As Derived2
b.Update

etc...

【问题讨论】:

    标签: asp.net inheritance derived-class


    【解决方案1】:

    我认为最好的方法是将派生对象保存在某种列表中,然后遍历它们以调用 Update。

    在伪代码中:

    foreach BaseClass item in {a, b, ...}:
        item.Update
    

    【讨论】:

      【解决方案2】:

      您可以通过传递基类(伪代码)的函数调用通过多态性来做到这一点:

      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
      

      【讨论】:

      • 您只是在为 CallUpdate 交易 .Update。有什么好处?
      • 我通过函数调用抽象了 BaseClass 功能。我阅读 OP 时询问是否有办法以通用方式调用 BaseClass 功能。
      • 不,我知道该怎么做,因此声明 Update 方法是继承的。我想要一种方法来一次调用所有派生类的Update 方法。
      • @Jason - 那么你想要递归的答案。 :)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-03-28
      • 1970-01-01
      • 1970-01-01
      • 2013-11-09
      • 1970-01-01
      • 2021-09-10
      • 1970-01-01
      相关资源
      最近更新 更多