什么是继承和派生?
什么是继承和派生?在我们写程序的时候,比如需要写两个类:男人类,和女人类 。但是在写这两个类的方法的时候有很多方法是相同的,比如吃饭类,喝水类,学习类。这样的写的话就做了重复的工作,增加了 写程序和后期维护的成本。因此C++里就有了继承和派生的概念,意思就是根据男人类和女人类的共同特点,抽象出一个人类。这里这个人类就相当于父类,女人类和男人类就相当于子类。子类可以继承除了父类的构造函数和外析构函数以外的所有数据成员函数和成员函数(包括私有的)。
继承和派生其实是一个意思,子类继承父类,父类派生子类。
如何实现类的继承和派生
先写一个父类 ,在写子类的时候在class 类名后加上继承方式,和父类的类名。在初始化的时候通过初始化类表,调用父类的构造函数 ,进行初始化。就这样就实现子类对父类的继承了。
例如:
//father.h 父类
#pragma once
#include<string>
#include<sstream>
using namespace std;
class Father {
public:
Father(const string &name, int age,int money);
protected:
int money;
private:
string name;
int age;
};
//父类的实现
//father.cpp
#include "Father.h"
Father::Father(const string & name, int age,int money) {
this->name = name;
this->age = age;
}
//Son.h 子类
#pragma once
#include<string>
#include"Father.h"
using namespace std;
class Son: private Father{
public:
**Son(const string &name, int age, const string &game):Father(name,age,money) {**
this->game = game;
this->money = money;
}
private:
string game;
};
这里注意看子类的头文件
继承和派生注意事项
1、子类的虽然通过初始化列表对父类进行初始化。但是即使是子类的成员函数,也不能调用继承过来父类的私有数据成员。即使那是初始化列表赋值的。但是可以通过父类的函数传递出私有的值。
2、当父类和子类同时有一个相同的构造函数。子类调用时,优先调用子类定义的。如果子类没有,在调用父类的。