C++的使用小教程4——类的继承

淡淡的烟草味﹌ 2024-04-18 22:15 22阅读 0赞

C++的使用小教程4——类的继承

  • 1、类的继承是什么
  • 2、派生类继承的内容
  • 3、类的继承的应用示例
    • 3.1、单继承
    • 3.2、多继承

面向对象编程噢!类的继承也很重要。
在这里插入图片描述

1、类的继承是什么

类的继承概念是怎么样的呢?它的概念就好像哺乳动物的关系,哺乳动物是一个类,人也是一个类,人属于哺乳动物,哺乳动物所具备的特征人都具备。因此,我们在“创建“人这个类的时候,不需要从头创建,它有许多特点可以从哺乳动物处获取。
换一种话说,当创建一个类时,您不需要重新编写新的数据类型和函数,只需指定新建的类继承了一个已有的类的成员即可,这就是类的继承。
这个已有的类称为基类,新建的类称为派生类。
在C++语言中,假设存在一个类,名为Box:

  1. class Box {
  2. protected:
  3. int width;
  4. int length;
  5. public:
  6. void setWidth(int widthIn);
  7. void setLength(int lengthIn);
  8. int getWidth();
  9. int getLength();
  10. };

如果有个类继承了Box类,他将拥有Box类的数据类型与函数,同时作为子类,它可以具备自己的特点,定义自己的属性与方法。

  1. class smallBox:public Box {
  2. public:
  3. int getArea() {
  4. return width * length;
  5. }
  6. };

这个类的功能与直接定义如下代码相同:

  1. class smallBox {
  2. protected:
  3. int width;
  4. int length;
  5. public:
  6. void setWidth(int widthIn);
  7. void setLength(int lengthIn);
  8. int getWidth();
  9. int getLength();
  10. int getArea() {
  11. return width * length;
  12. }
  13. };

2、派生类继承的内容

派生类并不是可以继承基类的所有内容,在基类中定义为private的,属于基类所特有的内容,无法被派生类继承。
换一句话说:派生类可以访问基类中所有的非私有成员。
如果基类成员中存在一定的参数或者函数不想被派生类的成员函数访问,则应在基类中声明为 private。
对于派生类继承基类的内容,总结如下:






























修饰符号 public protected private
基类 可以访问 可以访问 可以访问
派生类 可以访问 可以访问 不可以访问
外部类 可以访问 不可以访问 不可以访问

其中,外部类指的是在其它地方调用该类。如在main函数中定义。

  1. smallBox smallbox;

3、类的继承的应用示例

3.1、单继承

该例子讲述的是smallBox类继承Box类的例子。

  1. #include <iostream>
  2. #include <cstring>
  3. using namespace std;
  4. class Box {
  5. protected:
  6. int width;
  7. int length;
  8. public:
  9. void setWidth(int widthIn);
  10. void setLength(int lengthIn);
  11. int getWidth();
  12. int getLength();
  13. };
  14. void Box::setWidth(int widthIn){
  15. width = widthIn;
  16. }
  17. void Box::setLength(int lengthIn) {
  18. length = lengthIn;
  19. }
  20. int Box::getWidth() {
  21. return width;
  22. }
  23. int Box::getLength() {
  24. return length;
  25. }
  26. class smallBox:public Box {
  27. public:
  28. int getArea() {
  29. return width * length;
  30. }
  31. };
  32. int main()
  33. {
  34. smallBox smallbox;
  35. smallbox.setLength(5);
  36. smallbox.setWidth(5);
  37. cout << "The area of smallbox is " << smallbox.getArea();
  38. system("pause");
  39. }

应用结果为:

  1. The area of smallbox is 25
  2. 请按任意键继续. . .

3.2、多继承

多继承就好像爸爸妈妈生宝宝一样,宝宝会继承爸爸妈妈各自的特点,成为一个新的个体。

  1. #include <iostream>
  2. #include <cstring>
  3. using namespace std;
  4. /*Box基类*/
  5. class Box
  6. {
  7. protected:
  8. int width;
  9. int length;
  10. public:
  11. void setWidth(int widthIn);
  12. void setLength(int lengthIn);
  13. int getWidth();
  14. int getLength();
  15. };
  16. void Box::setWidth(int widthIn){
  17. width = widthIn;
  18. }
  19. void Box::setLength(int lengthIn) {
  20. length = lengthIn;
  21. }
  22. int Box::getWidth() {
  23. return width;
  24. }
  25. int Box::getLength() {
  26. return length;
  27. }
  28. /*HowMuch基类*/
  29. class HowMuch
  30. {
  31. public:
  32. int howMuchIsIt(int area)
  33. {
  34. return area * 5;
  35. }
  36. };
  37. /*继承上述两个类*/
  38. class smallBox:public Box,public HowMuch {
  39. public:
  40. int getArea() {
  41. return width * length;
  42. }
  43. };
  44. int main()
  45. {
  46. smallBox smallbox;
  47. smallbox.setLength(5);
  48. smallbox.setWidth(5);
  49. cout << "The area of smallbox is " << smallbox.getArea() << endl;
  50. cout << "It need " << smallbox.howMuchIsIt(smallbox.getArea()) << " yuan" << endl;
  51. system("pause");
  52. }

应用结果为:

  1. The area of smallbox is 25
  2. It need 125 yuan
  3. 请按任意键继续. . .

发表评论

表情:
评论列表 (有 0 条评论,22人围观)

还没有评论,来说两句吧...

相关阅读

    相关 c++继承

    进入正题之前我们来说一说关系 has-a 午餐可以有苹果,但是苹果不是午餐,所以苹果是午餐的一部分,我叫has-a is-like-a 人们通常说律师是鲨鱼,但是律师不是鲨

    相关 c++继承

    虚函数工作原理: 给每个对象添加一个隐藏成员。隐藏成员中保存了一个指向函数地址数组的指针(虚函数表)。 虚函数表中存储了为类对象进行声明的虚函数的地址 无论类中包含的

    相关 ++继承

    2.其他类的方法 (1)构造函数 创建新对象,因此不能被继承。 (2)析构函数 一定要定义显式析构函数来释放类构造函数使用new分配的所有内存,并完成类对象所需的