C+4•继承性剖析AnalysisonC++Inheritance庞新法PANGXin-fa(陕丙省委党校科技教研部,丙安710061)(ShaanxiProvincePartySchooloftheCPC,Xi'an710061,China)摘要院木文通过实例,用通俗易懂的语言,剖析了C++的继承机制,引进、改革、发展。Abstract:Throughexamples,thispaperusesplainlanguagetoanalyzetheinheritancemechanism,introduction,reformanddevelopmentofC++.关键词院C++程序设计;面向对象;继承Keywords:C++programming;object-oriented;inheritance院TP312文献标识码院A院1006-4311(2014)18-0207-021绪论“继承”是面向对象程序设计技术的三大机制之一。继承是指一个对象直接使用另一对象的属性和方法。实际生活中我们经常见到很多继承的例子,如知识的继承、财产的继承等。若把“人”看成一个实体,它可以分成多个子实体,“学生”、“教师”等。这些子实体都具有“人”的特性、属性,因此,“人”是它们的“父亲”,而这些子实体则是“人”的“孩子”。“人”是“基类”、“父类”,“学生”和“教师”是“派生类”、“子类”,子类继承了父类的所有行为和特征,父类派牛.了子类。继承就是利用己有的数据类型定义出新的数据类型,用于实现软件重复利用。2继承吸收基类成员继承可以使得子类異有父类的各种属性和方法,子类把父类所有成员全接受、引进、吸收,子类含了父类所有成员(构造、析构函数除外)。3继承可减少代码重复编程继承可以使得子类只有父类的各种属性和方法,而不需要再次重写相同的代码。4继承类可增加新成员子类继承父类,除具有父类的属性、方法以外,还可以增加自己的新特性、新方法。5可以重写基类成员函数在子类继承父类的同吋,可以重写某些方法,即覆盖父类的原有方法,使其获得与父类不同的功能,既继承又推陈出新。如例1student类不再沿用父类的print()例1classstudent:publicperson{public:student(char*n,char*b,char*s,intsc):person(n,b,s){score=sc;}printsex《《7《《score《《endl;}//重新定义基类函数成员private:intscore;};"成绩voidmain(){studentx("张小刚","1980-09-12","男",90};x.print0;}"调用student类中的print(),并非per原son类中的print()6可以重写基类数据成员在子类继承父类的同时,可以重新定义某些属性,即覆盖父类的原奋属性,使苏获得与父类不同的功能,既继承又有个性,有调整。如例2父类姓名最多6个字符,子类姓名最多8个字符。派生类中若出现与所继承基类中同名的成员函数,即使参数列表不相同,基类中的同名函数也会被覆盖掉。与此类似,同名的基类数据成员也会被隐藏。基类中的成员就被替换成派生类中的同名成员。伊J2#include"iostream.hH#include"string.h"classperson{public:charname[7];//姓名最多6个字符print(){cout《《name《《endl;}};classstudent:publicperson{public:print(){cout《《name《《endl;}charname[9];//重定义姓名最多8个字符private:!ntscore;};//成绩voidmain(){studentx;strcpy(x.name/•学生姓名••);//student的namestrcpy(x.person::name,"人姓名•’);//person的namex.print();x.person::print();}当子类与基类成员重名吋,若为public则在类外访问时,对象名.成员名访问子类成员、对象名.基类名::成员名访问基类成员。在子类成员函数访问时,成员名访问子类成员、基类名::成员名访问基类成员。7派生类声明格式class派生类名:继承方式基类名{新增成员声明;}三种继承方式:由于继承方式可以有public、private和protected三种,不同的继承方式会导致原来具冇不同访问属性的基类成员在派生类中的访问属性也冇所不冋。这种访问包括两个方面:一是派生类中新增成员对从基类继承来的成员的访问;二是派生类的外部通过派生类的对象从基类继承来的成员的访问。公有继承public(原封不动):基类的公有成员和保护成员可以作为其派生类的公有成员和保护成员。派生类的成员函数可以访问基类中的公奋成员和保护成员,无法直接访问基类中的私有成员(不可见、隐藏),只有通过基类提供的访问权限为public和protected的成员函数来访问。派生类的对象可以访问基类的公有成员。例3include"i...