诚信为本
量力而为
当前位置:ea编程网 EA知识 正文

面向对象编程中的继承关系

面向对象编程的特点之一是通过继承来鼓励代码的复用。从现有类派生新类,现有类称为基类,而新类称为派生类。派生类使用基类的成员,但也可以修改和补充它们。

继承的层次结构

当我们谈论继承时,我们实际上是在描述一个层次结构。例如,元素周期表中有气体,所有周期元素都具有气体的特性。而惰性气体是其中的一个重要子类。这样的层次结构使我们更容易解释惰性气体的行为。

几何形状的继承示例

考虑一个几何形状的继承示例。为了描述各种简单形状(如圆形、三角形、矩形、正方形等),最好的方法是创建一个基类,这个基类是所有派生类的祖先。

例如,我们可以创建一个基类CForm

class CForm { 
protected: 
   int m_kind; 
   int m_x; 
   int m_y; 
public: 
   CForm() {m_kind=0; m_x=0; m_y=0;} 
   void SetX(int x) {m_x=x;} 
   void SetY(int y) {m_y=y;} 
};

然后,我们可以从基类派生出新的类,如CRoundCQuadrangle

class CRound : public CForm { 
private: 
   int m_radius; 
public: 
   CRound() {m_kind=1;} 
}; 

class CQuadrangle : public CForm { 
private: 
   int m_side; 
public: 
   CQuadrangle() {m_kind=2;} 
};

继承的类型

  • 公开继承(public):派生类是基类的一个类型。这意味着,例如,正方形(CQuadrangle)是一种形状(CForm),但形状不一定是正方形。
  • 保护继承(protected):基类的公开和保护成员成为派生类的保护成员。这种继承关系不常见,使用时需要小心。
  • 私有继承(private):基类的公开和保护成员在派生类中变为私有成员。

在MQL4中,继承的语法如下:

class className :  
          (public | protected | private) opt  baseClassName 
  {                                      
    class members declaration 
  };

总结

通过声明基类中的最通用成员,我们可以在派生类中添加特定类的附加成员。这允许我们创建可以多次重用的强大的代码库。但是值得注意的是,MQL4不支持多重继承。

未经允许不得转载:ea编程网 » 面向对象编程中的继承关系