公用继承

简介: 公用继承

一.准备知识

  首先我们需要知道以下几个重要的概念:

  1. 基类
  2. 派生类
  3. 公用基类
  4. 公用派生类

概念引例

已知一个类Student,作用为用户输入学生的学号,姓名,性别,最后显示在屏幕上:[代码如下]

class Student
{
public:
   void get_value()
   {
    cin >> num >> name >> sex;
   }
   void display()
   {
    cout << "num:" << num << endl;
    cout << "name:" << name << endl;
    cout << "sex:" << sex << endl;
   }
private:
   int num;
   string name;
   char sex;
};

但现在我们又有新的需求,我们想要补充一些信息进入类里,为了防止代码的冗长和保持代码隐蔽性,安全性,我们决定在类A外想办法进行信息的补充。

  我们现在想让用户除了输入以上信息之外能够再输入学生的年龄,家庭地址。

  所以我们又新建一个类Student1

class Student1 :public Student
{
public:
  void get_value_1()
  {
    cin >> age >> addr;
  }
  void display_1()
  {
    cout << "age=" << age << endl;
    cout << "addr=" << addr << endl;
  }
private:
  int age;
  string addr;
};

这时候我们回过来理解刚才给出的概念:

  1. 基类--------------------------------------->Student
  2. 派生类--------------------------------------->Student1

   我们用Student1类的数据来补充Student类的信息时,还要保留

Student类里的数据,我们把这种保留机制称为继承

  继承方式有两种:publicprivate。我们这里讲到的是公用继

承,也就是public继承。所以概念理解:

  1. 公用基类--------------------------------------->Student
  2. 公用派生类--------------------------------------->Student1

二.公用继承的定义

我们在以上代码中已经提到过,这里直接给出定义的代码:

class Student1 :public Student

代码的示意:为基类Student定义一个公用的派生类Student1

反之,我们也可以定义一个私用的派生类,也就是私用继承,如下定义:

class Student1 :private Student

私用继承后边我们会讲到。

三.完成代码

/*================================
函数功能:利用公有继承输出学生信息
作者:令狐荣豪
时间:2019/5/19
==================================*/
#include<iostream>
#include<string>
using namespace std;
class Student
{
public:
  void get_value()
  {
    cin >> num >> name >> sex;
  }
  void display()
  {
    cout << "num:" << num << endl;
    cout << "name:" << name << endl;
    cout << "sex:" << sex << endl;
  }
private:
  int num;
  string name;
  char sex;
};
class Student1 :public Student
{
public:
  void get_value_1()
  {
    cin >> age >> addr;
  }
  void display_1()
  {
    cout << "age=" << age << endl;
    cout << "addr=" << addr << endl;
  }
private:
  int age;
  string addr;
};
int main()
{
  Student1 stud;
  stud.get_value();
  stud.get_value_1();
  stud.display();
  stud.display_1();
  return 0;
}

四.输出结果


目录
相关文章
|
4月前
|
编译器
继承——抽象基类与访问权限
继承——抽象基类与访问权限
|
5月前
|
存储 C语言 C++
【c++】类和对象 - 类的访问限定符及封装/作用域和实例化
【c++】类和对象 - 类的访问限定符及封装/作用域和实例化
【c++】类和对象 - 类的访问限定符及封装/作用域和实例化
|
5月前
|
C++
[C++] 多个模块实时公用一个类中的成员变量
[C++] 多个模块实时公用一个类中的成员变量
118 1
类和对象-封装-成员属性私有化
类和对象-封装-成员属性私有化
45 0
|
存储 安全 编译器
【C++基础】类与对象(上):访问限定符、类作用域、类实例化、类对象模型、this指针
【C++基础】类与对象(上):访问限定符、类作用域、类实例化、类对象模型、this指针
109 0
|
Java 程序员 C#
C++类成员的访问权限以及类的封装
C++通过 public、protected、private 三个关键字来控制成员变量和成员函数的访问权限,它们分别表示公有的、受保护的、私有的,被称为成员访问限定符。所谓访问权限,就是你能不能使用该类中的成员。 Java、C# 程序员注意,C++ 中的 public、private、protected 只能修饰类的成员,不能修饰类,C++中的类没有共有私有之分。 在类的内部(定义类的代码内部),无论成员被声明为 public、protected 还是 private,都是可以互相访问的,没有访问权限的限制。 在类的外部(定义类的代码之外),只能通过对象访问成员,并且通过对象只能访问 p
94 0
怎样声明一个类不会被继承,什么场景下会用?
怎样声明一个类不会被继承,什么场景下会用?
64 0
18-类和对象-封装-成员属性私有化
18-类和对象-封装-成员属性私有化
【C++之封装与信息隐蔽】类的公用接口与私有实现的分离
【C++之封装与信息隐蔽】类的公用接口与私有实现的分离