Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oop 如何解决类必须从基类继承的问题_Oop - Fatal编程技术网

Oop 如何解决类必须从基类继承的问题

Oop 如何解决类必须从基类继承的问题,oop,Oop,我想知道处理这种情况的最佳方法。如何避免重复元素 class ABO -> Need method A and B method C class AO : O method A class BO : O method B class O 谢谢 您可以避免继承。如果您只需要一个功能,而不需要一个IS-a关系,只需使用组合即可 保存所需类的两个本地成员,并创建一个将调用该成员函数的包装函数 类C伪代码示例: class ABO { AO m_ao; BO m_bo; pub

我想知道处理这种情况的最佳方法。如何避免重复元素

class ABO -> Need method A and B
method C

class AO : O
method A
class BO : O
method B

class O

谢谢

您可以避免继承。如果您只需要一个功能,而不需要一个IS-a关系,只需使用组合即可

保存所需类的两个本地成员,并创建一个将调用该成员函数的包装函数

类C伪代码示例:

class ABO
{
   AO m_ao;
   BO m_bo;

public:

   MethodA ()
   {
       m_ao.MethodA();
   }

   MethodB()
   {
      m_bo.MethodB();
   }
}

有些语言支持多重继承。您也可以尝试接口,或者组合而不是继承。问题中没有提供足够的信息来理解什么是最干净的方法。这个问题的答案取决于许多参数,包括“您的语言支持哪些OOP功能?”。此外,答案很可能是“你需要重构(改变)你的层次结构”。@David我想信息还不够。一个类可以从A和B的操作中继承。这种方法可能是错误的。使用接口可以解决我的问题,但我使用的语言不能在接口中使用类型,我需要一种定义泛型的方法。@Rushino:不,没有足够的信息。关于这些模型,没有任何内容描述它们之间的关系,也没有描述它们正在建模的概念。在这种情况下,继承可能根本不是正确的方法。此外,哪些面向对象的特性甚至可用在很大程度上取决于所使用的语言,这在问题中没有具体说明。就目前而言,这完全是主观的,容易引起不必要的争论。你能举个例子吗?@Rushino我添加了一个简单的例子。