【c++程序】浅谈继承与派生
2015-10-05 16:26
337 查看
1.继承和派生的概念
继承的概念:比如说父亲是个矮子,儿子也是个矮子,那么儿子继承了父亲的矮个的遗传信息,更加精确的说法是儿子从父亲那里继承了“人”的全部特性,然后又继承了父亲特有的矮个信息。因此这里出现了两层继承,第一层是儿子继承了所有人类共有的特性,能站立行走,能说话,能思考,能创造和使用工具。第二层是儿子继承了人类中的一员—父亲的某个特性,个子较其他人矮一些。
人类
父亲
儿子
在这里人类是基类,又叫父亲,父亲是人类的一个子类,由于他除了具备人类的共同特性之外,还衍生出了自己的一个特性——个子比其他人要矮小,因此他又叫做派生类。
儿子是父亲的子类,他继承了父亲一些基本特性,并且他还衍生出了自己的一些特征,比如眼睛可能比父亲大一些,身材也要比父亲强壮些,我们把他创建这些新特性的过程叫做派生,由于他也是一个类——儿子类,并且是从父亲那里派生出来,所以我们把他叫做父亲的子类,又叫做派生类。
通常子类不加修改地延续父类的特性,我们把它叫做继承,而子类在延续父类特性的基础上又添加了自己的新特性,我们把这种在原有类的基础上建立新的类并且添加新特性的过程叫做“类的派生”。
类的派生和继承,是面向对象程序语言中一个很重要概念,通过继承和派生程序员很快地在原有类的基础上建立一个新的类,而不是花费巨大精力来重新设计一个类,这在多人合作和比较大的工程上是非常有用的。
2继承和派生如何在C++中实现
儿子继承了父亲作为人类的一些基本特性,然后又继承了父亲矮个的特性,这两个人属于从属关系,而不是构造关系。但若儿子在继承父亲的基本特性的基础上修改了一部分新的特性或者添加了一些新的特性,那么我们就要在儿子这个派生类中做如下几种变化:
1)增加新的成员变量——博士伦;
2)增加新的成员变量——眼镜;
3)重新定义已有的成员变量——个头;
4)改变已有的成员的属性——由个矮修改为个高;
这就是从基类构造一个派生类的方法。
C++中有两种继承,单一继承和多重继承。只有一个基类的叫做单一继承,拥有多个基类的叫做多重继承。
注意:关键字protect,其他类不可以使用。但是派生类可以使用。
举一例关于多重继承:
继承的概念:比如说父亲是个矮子,儿子也是个矮子,那么儿子继承了父亲的矮个的遗传信息,更加精确的说法是儿子从父亲那里继承了“人”的全部特性,然后又继承了父亲特有的矮个信息。因此这里出现了两层继承,第一层是儿子继承了所有人类共有的特性,能站立行走,能说话,能思考,能创造和使用工具。第二层是儿子继承了人类中的一员—父亲的某个特性,个子较其他人矮一些。
人类
父亲
儿子
在这里人类是基类,又叫父亲,父亲是人类的一个子类,由于他除了具备人类的共同特性之外,还衍生出了自己的一个特性——个子比其他人要矮小,因此他又叫做派生类。
儿子是父亲的子类,他继承了父亲一些基本特性,并且他还衍生出了自己的一些特征,比如眼睛可能比父亲大一些,身材也要比父亲强壮些,我们把他创建这些新特性的过程叫做派生,由于他也是一个类——儿子类,并且是从父亲那里派生出来,所以我们把他叫做父亲的子类,又叫做派生类。
通常子类不加修改地延续父类的特性,我们把它叫做继承,而子类在延续父类特性的基础上又添加了自己的新特性,我们把这种在原有类的基础上建立新的类并且添加新特性的过程叫做“类的派生”。
类的派生和继承,是面向对象程序语言中一个很重要概念,通过继承和派生程序员很快地在原有类的基础上建立一个新的类,而不是花费巨大精力来重新设计一个类,这在多人合作和比较大的工程上是非常有用的。
2继承和派生如何在C++中实现
儿子继承了父亲作为人类的一些基本特性,然后又继承了父亲矮个的特性,这两个人属于从属关系,而不是构造关系。但若儿子在继承父亲的基本特性的基础上修改了一部分新的特性或者添加了一些新的特性,那么我们就要在儿子这个派生类中做如下几种变化:
1)增加新的成员变量——博士伦;
2)增加新的成员变量——眼镜;
3)重新定义已有的成员变量——个头;
4)改变已有的成员的属性——由个矮修改为个高;
这就是从基类构造一个派生类的方法。
C++中有两种继承,单一继承和多重继承。只有一个基类的叫做单一继承,拥有多个基类的叫做多重继承。
注意:关键字protect,其他类不可以使用。但是派生类可以使用。
举一例关于多重继承:
#include<iostream> using namespace std; class father { public: void SetHeight(int h){height=h;} void ShowHeight(){cout<<"The height is "<<height<<"cm."<<endl;} private: int height; }; class mother { public: void SetWeight(int w){weight=w;} void ShowWeight(){cout<<"The weight is "<<weight<<"kg."<<endl;} private: int weight; }; class son:public father,public mother { public: void SetAge(int a){age=a;} void ShowAge(){cout<<"The age is "<<age<<" years old."<<endl;} void Show(){ShowHeight(),ShowWeight(),ShowAge();} private: int age; }; int main() { son Jike; Jike.SetAge(13); Jike.SetHeight(150); Jike.SetWeight(50); Jike.ShowAge(); Jike.ShowHeight(); Jike.ShowWeight(); Jike.Show(); }