Tuesday, 11 March 2014

Hybrid Inheritance

In this type of Inheritance more than form of inheritance type occures. It combines two or more form of inheritance .When a sub class inherits from multiple base classes and all of its base classes inherit from a single base class, this form of inheritance can referred as Hybrid inheritance.

First From ::
         __________________
        |  Base class - A  |
        |__________________|
                    ^
                    |
            ________|_________    __________________ 
           |  class - B       |  |  class - C       |
           |__________________|  |__________________|
                    ^                       ^
                    |     __________________|
              ______|____|____
             |  class - D       |
             |__________________|    
General Form ::
    class  A
    {
    };
    class B:public A
    {
    };
    class C
    {
    };
    class  D:public C,public B
    {
    };

For Example :
#include <iostream.h>
#include <conio.h>
class  A
{
  protected:
  int regno;
  public:
  void  getRegno(int a)
  {
    regno=a;
  }
  void  putRegno()
  {
    cout << endl << "Student Registration Number::" << regno;
  }
};
class  B : public  A
{
  protected:
  int Sess_No1,Sess_No2,Sess_No3;
  public:
  void getSessional(int m1,int m2,int m3)
  {
    Sess_No1=m1;
    Sess_No2=m2;
    Sess_No3=m3;
  }
  void  putSessional()
  {
    cout << endl << " Sessinal Marks-1::" << Sess_No1;
    cout << endl << " Sessinal Marks-1::" << Sess_No2;
    cout << endl << " Sessinal Marks-1::" << Sess_No3;
  }
};
class  C
{
  protected :
  char grade;
  public :
  void   getGrade(char i)
  {
     grade=i;
  }
  void  putGrade()
  {
    cout << endl << " Sports  Grade::" << grade;
  }
};
class D : public  C ,public B
{
  private:
  int total;
  public :
  void  dispResult ()
  {
    total=Sess_No1+Sess_No2+Sess_No3;
    putRegno();
    putSessional();
    putGrade();
    cout << endl << "  Total Marks  Obtained::" << total;
  }
};
int main ()
{
  D  object;
  object.getRegno(101);
  object.getSessional(90,90,98);
  object.getGrade('A');
  object.dispResult();
  return 0;
}
Second Form ::
[Need to make virtual base class to handle following form of inheritance]
                   ____________________
          ------->|   Base class - A   |<-------
          |       |____________________|       |
          |                                    |  
          |                                    |
          |                                    |
 _________|__________               ___________|________ 
|  Derive class - B  |             |  Derive class - C  |
|____________________|             |____________________|
          ^                                    ^
          |                                    |  
          |                                    |
          |        ____________________        |
          |_______|  Derive class - D  |_______|
                  |____________________|
                    

General Form ::
    class  A
    {
    };
    class  B:public A
    {
    };
    class  C:public A
    {
    };
    class  D:public  B,public  C
    {
    };

No comments:

Post a Comment