这篇文章是我自己对于继承和派生内容学习的理解和总结。
在我看来继承与派生是对于已写代码最大的利用,和对减少新代码的工作量的最好方法之一。
在如今的代码编写中,很多时候我们都会面对一些重复的编写,比如我们写一个算法的代码,刚开始他可能会存在一定的不足或漏洞,我们会去不断的完善和修改他,在这个过程中,我们就会编写新的代码去代替他,但是他原本的作用肯定还是存在的,如果我们在从头去编写,就会加大自己的工作量,对于我们而言是非常不划算的,而针对此问题,就显现出了继承的重要性。
继承与派生
class Student
{
public:
void display()
{
cout << "num :" << num <<endl;
cout << "name:" << name << endl;
cout << "addr:" << addr <<endl;
}
private:
int num;
char name[20];
char addr[20];
};
关于继承我先举一个例子,如上代码是我编写的一个学生类,他有学号,姓名,和地址三个变量,但是随着发展,可能对于学生的信息会需要的更多,比如我们又加了一个号码。代码就会变成如下格式:
class Student2
{
public:
void display()
{
cout << "num :" << num << endl;
cout << "name:" << name << endl;
cout << "addr:" << addr << endl;
}private:int num;char name[20];char addr[20];char phone[12];}; 如上,对于两次代码,基本是相同的,我只增加了一个新的变量而已,但是尽管改变不大,我却需要将代码整个重新写一遍。如此对于我们的工作量就十分大,而派生的用处就体现出来了。如果使用继承的话代码就会在第一个代码的基础上变成:cout << "phone:" << phone << endl;
这样就会节省大量的时间和工作量,对于如上代码,我们将Student类称为父类或者基类,此类为被继承的类,而Student3称为子类或者派生类,又父类派生得来,子类拥有父类的一切属性。class Student3:public Student { public: void display_3() { cout << "phone:" << phone << endl; } private: char phone[12]; };
由上述代码也能看出继承格式为class 派生类名:继承方式 基类名。
由上图可以看出b的确拥有了d的display函数,因为变量我们设置的是private所以在类外不能访问。通过上述代码,我们就对继承和派生有了初步的认识,然而继承也分为多种继承方式。
分别为public,protected和private。
对于public继承,父类函数数据在子类中存在方式不变。
对于protected继承,父类函数public的函数或者变量变为protected,protected和private不变。
对于private继承,所有内容均变为private。
对于这些继承方式,最主要需要记住private的内容不可以类外访问。