继承是面向对象编程系统(OOP)的特性之一,它允许子类获取父类的属性(数据成员)和函数(成员函数)。
什么是子类?
继承另一个类的类称为子类,它也称为派生类。
什么是父类?
被其他类继承的类称为父类,超类或基类。
继承语法
class parent_class
{
//Body of parent class
};
class child_class : access_modifier parent_class
{
//Body of child class
};
在 C++编程中使用继承有什么好处
继承的主要优点是代码可重用性和可读性。当子类继承父类的属性和函数时,我们不需要在子类中再次编写相同的代码。这使得重用代码变得更容易,使我们编写更少的代码,代码变得更具可读性。
让我们来看一个现实生活中的例子来理解这一点:让我们假设Human
是一个具有height
,weight
,color
等属性的类,以及诸如eat()
,sleep()
,dream()
,work()
等函数。
现在我们要创建Male
和Female
类,这些类是不同的,但由于男性和女性都是人类,他们共享一些共同的属性和行为(函数),所以他们可以继承Human
类,其余的那些属性和函数可以单独写在它们的类中。
这种方法使我们编写更少的代码,因为这两个类从基类继承了几个属性和函数,因此我们不需要重写它们。此外,这使得更容易阅读代码。
继承示例
在我们讨论继承类型之前,让我们举个例子:
这里我们有两个类Teacher
和MathTeacher
,MathTeacher
类继承了Teacher
类,这意味着Teacher
是一个父类,MathTeacher
是一个子类。子类可以使用父类的属性collegeName
。
另一个要注意的重点是,当我们创建子类的对象时,它调用子类的构造函数,子类构造函数自动调用基类的构造函数。
#include <iostream>
using namespace std;
class Teacher {
public:
Teacher(){
cout<<"Hey Guys, I am a teacher"<<endl;
}
string collegeName = "Beginnersbook";
};
//This class inherits Teacher class
class MathTeacher: public Teacher {
public:
MathTeacher(){
cout<<"I am a Math Teacher"<<endl;
}
string mainSub = "Math";
string name = "Negan";
};
int main() {
MathTeacher obj;
cout<<"Name: "<<obj.name<<endl;
cout<<"College Name: "<<obj.collegeName<<endl;
cout<<"Main Subject: "<<obj.mainSub<<endl;
return 0;
}
输出:
Hey Guys, I am a teacher
I am a Math Teacher
Name: Negan
College Name: Beginnersbook
Main Subject: Math
C++ 中的继承类型
1)单一继承
2)多级继承
3)多重继承
4)分层继承
5)混合继承
单继承
在单继承中,一个类完全继承一个类。
例如:假设我们有A
类和B
类.
B inherits A
单一继承的例子:
#include <iostream>
using namespace std;
class A {
public:
A(){
cout<<"Constructor of A class"<<endl;
}
};
class B: public A {
public:
B(){
cout<<"Constructor of B class";
}
};
int main() {
//Creating object of class B
B obj;
return 0;
}
输出:
Constructor of A class
Constructor of B class
多级继承
在这种类型的继承中,一个类继承另一个子类。
C inherits B and B inherits A
多级继承示例:
#include <iostream>
using namespace std;
class A {
public:
A(){
cout<<"Constructor of A class"<<endl;
}
};
class B: public A {
public:
B(){
cout<<"Constructor of B class"<<endl;
}
};
class C: public B {
public:
C(){
cout<<"Constructor of C class"<<endl;
}
};
int main() {
//Creating object of class C
C obj;
return 0;
}
输出:
Constructor of A class
Constructor of B class
Constructor of C class
多重继承
在多继承中,类可以继承多个类。这意味着在这种类型的继承中,单个子类可以具有多个父类。
例如:
C inherits A and B both
多重继承的例子:
#include <iostream>
using namespace std;
class A {
public:
A(){
cout<<"Constructor of A class"<<endl;
}
};
class B {
public:
B(){
cout<<"Constructor of B class"<<endl;
}
};
class C: public A, public B {
public:
C(){
cout<<"Constructor of C class"<<endl;
}
};
int main() {
//Creating object of class C
C obj;
return 0;
}
Constructor of A class
Constructor of B class
Constructor of C class
分层继承
在这种类型的继承中,一个父类具有多个子类。例如:
Class B and C inherits class A
分层继承的例子:
#include <iostream>
using namespace std;
class A {
public:
A(){
cout<<"Constructor of A class"<<endl;
}
};
class B: public A {
public:
B(){
cout<<"Constructor of B class"<<endl;
}
};
class C: public A{
public:
C(){
cout<<"Constructor of C class"<<endl;
}
};
int main() {
//Creating object of class C
C obj;
return 0;
}
输出:
Constructor of A class
Constructor of C class
混合继承
混合继承是多种继承类型的组合。例如,遵循多重和分层继承的子类和父类关系都可以称为混合继承。