【发布时间】:2017-03-25 01:28:21
【问题描述】:
我有一个很好的完整课程,正在做很棒的事情。我需要通过替换其中的一些方法来允许用户使用这个类,但不允许继承,因为这个类在其他应用程序类中也有使用。
就像您有一个创建表格的类,但是您需要允许用户重新定义创建表格单元格的方法,以让用户在此单元格中打印自定义内容。然而,该类具有打印单元格内容的默认方式(以防用户不需要自定义它)。
是否有任何常用或标准化的方法来实现这一目标?
【问题讨论】:
-
您能否更好地解释为什么不允许继承?你说这个类也用在其他应用类中。所以?继承不会改变基类的行为,只会改变子类。这听起来像是继承的完美候选者。
-
@adv12 因为我在这个应用程序中有 10 个使用基本类的类。继承意味着用户也需要更改其他 10 个类以让他们使用继承的类而不是原来的类
-
不是这样。从基类继承不会对现有类的任何使用产生影响(前提是您不对基类进行任何重大更改——比如将其标记为抽象类)——这听起来像是继承的主要候选者。
-
@Epsiloncool,如果这些类正在创建它们自己的基类实例,那就是真的。但是,如果您预期所需的功能类型,通常不会这样设置应用程序。为了使这一切正常工作,您必须将对象从知道是使用基类还是子类的外部类传递到这些类中。使用对象的 10 个类不必关心它们实际上是基类还是子类的实例。
-
将新的类对象传递给其他 10 个类是最好的解决方案,其他解决方案实际上是补丁。
标签: c# inheritance methods extending-classes