0% found this document useful (0 votes)
6 views4 pages

28-07-25 Hierarchical & Hybrid Inheritance

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
6 views4 pages

28-07-25 Hierarchical & Hybrid Inheritance

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd

Types of Inheritances:

Simple or Single
Multiple
Multilevel
Hierarchical
Hybrid

Hierarchical Inheritance:
From a Single Direct Base Class, there can be more than one Derived Classes
(Derived Class may be
Direct Derived Class or Derived Class).

Base Class : Only One Direct Base Class


Derived Class : Can be more than One Direct Derived or Derived Classes

Direct Base Class : Internal


Intermdiate Base Class : External1, External2
Derived Class : Result1, Result2

//Hierarchical Inheritance
#include<iostream.h>
#include<conio.h>
class Internal
{
protected:
int m1,m2,m3,m4;
public:
Internal(int a,int b,int c,int d)
{
m1=a;
m2=b;
m3=c;
m4=d;
}
};
class External1 : public Internal
{
protected:
int e1;
public:
External1(int a,int b,int c,int d,int x1):Internal(a,b,c,d)
{
e1=x1;
}
};
class External2 : public Internal
{
protected:
int e2;
public:
External2(int a,int b,int c,int d,int x2):Internal(a,b,c,d)
{
e2=x2;
}
};
class Result1 : public External1
{
public:
Result1(int a,int b,int c,int d,int x1):External1(a,b,c,d,x1)
{
}
void display()
{
float im=((m1+m2+m3+m4)/4.0)*0.4;
float em=e1*0.6;
cout<<"\nSubject 1 = "<<(int)(im+em);
}
};
class Result2 : public External2
{
public:
Result2(int a,int b,int c,int d,int x2):External2(a,b,c,d,x2)
{
}
void display()
{
float im=((m1+m2+m3+m4)/4.0)*0.4;
float em=e2*0.6;
cout<<"\nSubject 2 = "<<(int)(im+em);
}
};
void main()
{
clrscr();
int m1,m2,m3,m4,e1,e2;
cout<<"\nAttendance Mark = ";
cin>>m1;
cout<<"\nAssignment Mark = ";
cin>>m2;
cout<<"\nDiscipline Mark = ";
cin>>m3;
cout<<"\nInternal Test Mark = ";
cin>>m4;
cout<<"\nSubject 1 External Mark = ";
cin>>e1;
cout<<"\nSubject 2 External Mark = ";
cin>>e2;
Result1 ob1(m1,m2,m3,m4,e1);
Result2 ob2(m1,m2,m3,m4,e2);
ob1.display();
ob2.display();
getch();
}

Hybrid Inheritance:
- Combination of more than one Inheritances
- Final result must be a single derived class

Base Class : More than One Direct Base Class


Derived Class : Only One Derived Class

Direct Base Class : External, Attendance,Assignment,Discipline,Internal


Intermediate Base Class : External_Mark,Internal_Mark
Derived Class : Result

//Hybrid Inheritance
#include<iostream.h>
#include<conio.h>
//Simple or Single Inheritance
class External
{
protected:
int e1;
public:
External(int a)
{
e1=a;
}
};
class External_Mark : public External
{
public:
External_Mark(int a):External(a)
{
}
float emark()
{
return(e1*0.6);
}
};
//Multiple Inheritance
class Attendance
{
protected:
int m1;
public:
Attendance(int b)
{
m1=b;
}
};
class Assignment
{
protected:
int m2;
public:
Assignment(int c)
{
m2=c;
}
};
class Discipline
{
protected:
int m3;
public:
Discipline(int d)
{
m3=d;
}
};
class Internal
{
protected:
int m4;
public:
Internal(int e)
{
m4=e;
}
};
class Internal_Mark :public Attendance,public Assignment,public Discipline,public
Internal
{
public:
Internal_Mark(int b,int c,int d,int
e):Attendance(b),Assignment(c),Discipline(d),Internal(e)
{
}
float imark()
{
return(((m1+m2+m3+m4)/4.0)*0.4);
}
};
//Hybrid Inheritance = Single + Multiple
class Result : public External_Mark,public Internal_Mark
{
public:
Result(int a,int b,int c,int d,int e):External_Mark(a),Internal_Mark(b,c,d,e)
{
}
void display()
{
float im=imark();
float em=emark();
cout<<"\nResult = "<<(int)(im+em);
}
};
void main()
{
clrscr();
int m1,m2,m3,m4,e1;
cout<<"\nAttendance Mark = ";
cin>>m1;
cout<<"\nAssignment Mark = ";
cin>>m2;
cout<<"\nDiscipline Mark = ";
cin>>m3;
cout<<"\nInternal Test Mark = ";
cin>>m4;
cout<<"\nSubject 1 External Mark = ";
cin>>e1;
Result ob(e1,m1,m2,m3,m4);
ob.display();
getch();
}

You might also like