文档介绍:C++程序设计教程
第7讲: 继承与派生
C
引言
继承:inheritance
用现有的类建立新类,在新类中继承了现有类的属性和行为,新类还可以对这些行为和属性进行修饰。
现有的类--- 基类 Base class
新类--- 派生类 Derived class。
A
B
A
B
A
基类 A
派生类 B
派生类 C
基类和派生类
有关继承的例子:
Student CommuterStudent / ResidentStudent
Shape Circle / Triangle / Rectangle
Loan Carloan / HomeImprovementLoan / MortgageLoan
Employee FacultyMember / StaffMember
Account ount / ount
基类和派生类
继承的层次结构
CommunityMember
Employee
Student
Faculty
Staff
Administrator
Teacher
基类和派生类
继承的层次结构
Shape
TwoDimShape
ThreeDimShape
Circle
Square
Triangle
Sphere
Cube
Tetrahedron
基类和派生类
公有继承 public inheritance
missionWorker : public Employee
{ …};
public:
protected:
private:
public:
protected:
private:
public:
protected:
private:
Base Class
Derived Class
受保护的成员
1) 公有成员可以被外部访问,也可以被继承;
2) 私有成员不能被外部访问,也不能被继承;
3) 受保护的成员不能被外部访问,但可以被继承。
把基类指针强制转换为派生类指针
公有派生类的对象可作为其相应基类的对象处理。
public:
protected:
private:
public:
protected:
private:
派生类指针
范围
基类指针范围
使用成员函数
派生类可以访问基类的公有成员和受保护成员。
派生类不能访问基类的私有成员。
在派生类中重定义基类成员
派生类可以重新定义基类的成员函数。(重载)
在派生类引用该函数时,会首先调用派生类中的版本。
class Employee
void print() const
base class
class HourlyWorker
void print() const
derived class
公有的、受保护的和私有的基类
继承有三种:公有、受保护和私有继承。
公有继承:
基类的public成为派生类的public。
基类的protected成为派生类的protected。
受保护继承:
基类的public和protected成为派生类的protected。
私有继承:
基类的public和protected成为派生类的private
直接基类和间接基类
直接基类是直接派生而来,间接基类则是经过多层次派生得到的。
公有继承举例 7-1
class Point //基类Point类的声明
{
public: //公有函数成员
void InitP(float xx=0, float yy=0)
{ X = xx; Y = yy; }
void Move(float xOff, float yOff)
{ X += xOff; Y += yOff; }
float GetX() { return X; }
float GetY() { return Y; }
private: //私有数据成员
float X,Y;
};