C++ 中的继承(汇总所有内容)

面向对象编程的主要目的之一是提供可靠重用的代码。开发新项目。尤其是当项目十分庞大时,重用代码经过测试的代码比重新编写的代码要好得多。

在使用的已有的代码可以节省时间,由于已有的代码已经被使用和测试过,因此有助于避免在程序中引入错误。

继承是一种放非常好的概念,其基本实现非常简单。下面讲对继承做简单的介绍。

什么是子类?

可以简单的理解为:继承另一个类的类称为子类,它也称为派生类。

什么是父类?

被其他类继承的类称为父类,超类或基类。

来看看个简单的继承语法:

class parent_class
{
    //父类主体
};
class child_class : access-specifier parent_class  
{
   //子类主体
};

其中,访问修饰符 access-specifier 是 public、protected 或 private 其中的一个,parent-class 是之前定义过的某个类的名称。如果未使用访问修饰符 access-specifier,则默认为 private。

在 C++编程中使用继承有什么好处

继承的主要优点是代码可重用性可读性。当子类继承父类的属性和函数时,我们不需要在子类中再次编写相同的代码。这使得重用代码变得更容易,使我们编写更少的代码,代码变得更具可读性。

说了这么多概念的知识点,还不如直接上代码举例呢!

继承示例

在我们讨论继承类型之前,让我们举个例子:

#include <iostream>


using namespace std;

// 基类
class Teacher {

public:
  Teacher(){
    cout<<"Hey Guys, I am a teacher"<<endl;
  }

  string collegeName = "Beginnersbook";

};


// 派生类
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;
}

编译运行

在这里插入图片描述
这里我们有两个类TeacherMathTeacherMathTeacher类继承了Teacher类,这意味着Teacher是一个父类,MathTeacher是一个子类。子类可以使用父类的属性collegeName

但是要注意一下:

当我们创建子类的对象时,它调用子类的构造函数,子类构造函数自动调用基类的构造函数。

C++ 中的继承类型

1、单一继承
2、多级继承
3、多重继承
4、分层继承
5、混合继承

单继承

在单继承中,一个类完全继承一个类。

例如:假设我们有A类和B类.

#include <iostream>

using namespace std;

//父类
class A {

public:
  A(){
     cout<<"A类构造函数"<<endl;
  }
};

//子类
class B: public A {

public:

  B(){
     cout<<"B类构造函数"<<endl;
  }
};


int main() {

   //创建B类的对象
   B obj;

   return 0;
}


编译运行

在这里插入图片描述

多级继承

在这种类型的继承中,一个类继承另一个子类。

例如:

C inherits B and B inherits A

来看看一个简单多级继承例子:

#include <iostream>

using namespace std;
class A {
public:
  A(){
     cout<<"A类构造函数"<<endl;
  }
};
class B: public A {
public:
  B(){
     cout<<"B类构造函数"<<endl;
  }
};
class C: public B {
public:
  C(){
     cout<<"C类构造函数"<<endl;
  }
};
int main() {
  //创建类C的对象
  C obj;
  return 0;
}

编译运行

在这里插入图片描述
多重继承

在多继承中,类可以继承多个类。这意味着在这种类型的继承中,单个子类可以具有多个父类。

例如:

#include <iostream>
using namespace std;

class A {

public:
  A(){
     cout<<"A类构造函数"<<endl;
  }
};

class B {

public:
  B(){
     cout<<"B类构造函数"<<endl;
  }
};

class C: public A, public B {

public:
  C(){
     cout<<"C类构造函数"<<endl;
  }
};

int main() {
  
   //创建类C的对象
   C obj;
   return 0;
}



编译运行

在这里插入图片描述
可以看到运行的信息跟上面的多级继承一样。

分层继承

在这种类型的继承中,一个父类具有多个子类。例如:

#include <iostream>
using namespace std;

class A {

public:
  A(){
     cout<<"A类构造函数"<<endl;
  }
};

class B: public A {

public:
  B(){ 
     cout<<"B类构造函数"<<endl;
  }
};

class C: public A{

public:
  C(){
     cout<<"C类构造函数"<<endl;
  }
};
int main() {

   //创建类C的对象
   C obj;
   return 0;
}

编译运行

在这里插入图片描述
最后一个例子就是混合继承咯。

混合继承

混合继承是多种继承类型的组合。例如,遵循多重和分层继承的子类和父类关系都可以称为混合继承。

所以就不举例咯。

总结

继承性是面向对象程序设计最重要的特性之一,使软件有了可重用性。

参考:C++ Primer Plus

在这里插入图片描述

欢迎关注公众号【程序猿编码】,添加本人微信号(17865354792),回复:领取学习资料。或者回复:进入技术交流群。网盘资料有如下:

在这里插入图片描述

发布了131 篇原创文章 · 获赞 115 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/chen1415886044/article/details/105407699