第7章继承与派生 6.2类的继承方式 622保护继承(续三) 标识符的作用范围:成员函数作用域(如函数内部定义的局 部变量及函数参数),类或者派生类作用域(如类中定义的数据 成员或成员函数),基类作用域(如基类中定义的数据成员或成 员函数),全局作用域(如定义的全局变量,及全局函数,即普 通函数) 标识符的访问原则:如果在某一程序段中有一个以上的同名 标识符都有效,则标识符的作用范围越小,被访问到的优先级越 高 如果希望访问作用范围更大的标识符,则可以用类名和作用 域运算符进行限定。如: CLocation.: MoveTo(x,y)
6.2 类的继承方式 6.2.2 保护继承(续三) 标识符的作用范围:成员函数作用域(如函数内部定义的局 部变量及函数参数),类或者派生类作用域(如类中定义的数据 成员或成员函数),基类作用域(如基类中定义的数据成员或成 员函数),全局作用域(如定义的全局变量,及全局函数,即普 通函数)。 标识符的访问原则:如果在某一程序段中有一个以上的同名 标识符都有效,则标识符的作用范围越小,被访问到的优先级越 高。 如果希望访问作用范围更大的标识符,则可以用类名和作用 域运算符进行限定。如: CLocation::MoveTo(x,y)。 第7章 继承与派生
第7章继承与派生 6.2类的继承方式 62.2保护继承(续四) 分析本例CPon类的部分成员属性: C Point类的成员函数不能访问的成员有 Int x ∥继承基类的私有成员,类的成员函数不可访问 int ∥继承基类的私有成员,类的成员函数不可访问 C Pointa类的私有成员有: char Color[10] ∥己定义的私有成员 C Point类的保护成员有: int GetXo ∥继承基类的公有成员,成为保护成员 int Getto ∥继承基类的公有成员,成为保护成员 void moveto(ntx,inty);∥继承基类的公有成员,成为保护成员 CPoint类的公有成员有: void MoveTo(intx,inty;∥自己定义的公有成员 void Setcolor(char*c);∥自己定义的公有成员 void showo ∥己定义的公有成员
6.2 类的继承方式 6.2.2 保护继承(续四) 分析本例CPoint类的部分成员属性: CPoint类的成员函数不能访问的成员有: int x; //继承基类的私有成员,类的成员函数不可访问 int y; //继承基类的私有成员,类的成员函数不可访问 CPoint类的私有成员有: char Color[10]; //自己定义的私有成员 CPoint类的保护成员有: int Getx(); //继承基类的公有成员,成为保护成员 int Gety(); //继承基类的公有成员,成为保护成员 void MoveTo(int x, int y); //继承基类的公有成员,成为保护成员 CPoint类的公有成员有: void MoveTo(int x, int y); //自己定义的公有成员 void SetColor(char *c); //自己定义的公有成员 void Show(); //自己定义的公有成员 第7章 继承与派生
第7章继承与派生 6.2类的继承方式 623私有继承 私有继承的特点: (1)基类的私有成员不能被派生类的函数成员访问 2)基类的公有成员和保护成员在派生类中的访问权限变为私 有类型 将例61的继承方式改为私有继承,其他代码保持不变 class cpoint private clocation rivate char color[10 public CPoint(char*c) void Setcolor(char *c) void Showo
6.2 类的继承方式 6.2.3 私有继承 私有继承的特点: (1) 基类的私有成员不能被派生类的函数成员访问 (2) 基类的公有成员和保护成员在派生类中的访问权限变为私 有类型 将例6.1的继承方式改为私有继承,其他代码保持不变 class CPoint : private CLocation { private: char Color[10]; public: CPoint(char *c); void SetColor(char *c); void Show(); }; 第7章 继承与派生
第7章继承与派生 6.2类的继承方式 623私有继承(续) 日分析本例 C Point类的部分成员属性 C Point类的成员函数不能访问的成员有: int X; ∥继承基类的私有成员,类的成员函数不可访问 y ∥继承基类的私有成员,类的成员函数不可访问 C Point类的私有成员有: char Color[10] ∥己定义的私有成员 int Getxo: ∥继承基类的公有成员,成为私有成员 int Geto ∥继承基类的公有成员,成为私有成员 void moveto(intx,inty);∥继承基类的公有成员,成为私有成员 C Point类的公有成员有 void Setcolor( char *c);∥自己定义的公有成员 void Showo ∥自己定义的公有成员
6.2 类的继承方式 6.2.3 私有继承(续) 分析本例CPoint类的部分成员属性: CPoint类的成员函数不能访问的成员有: int x; //继承基类的私有成员,类的成员函数不可访问 int y; //继承基类的私有成员,类的成员函数不可访问 CPoint类的私有成员有: char Color[10]; //自己定义的私有成员 int Getx(); //继承基类的公有成员,成为私有成员 int Gety(); //继承基类的公有成员,成为私有成员 void MoveTo(int x, int y); //继承基类的公有成员,成为私有成员 CPoint类的公有成员有: void SetColor(char *c); //自己定义的公有成员 void Show(); //自己定义的公有成员 第7章 继承与派生
第7章继承与派生 6.2类的继承方式 派生类继承基类成员访问权限的变化表: 派生控制 基类成员 private protected public private 不能访问 不能访问 不能访问 protected private protected protected public private protected public
6.2 类的继承方式 派生类继承基类成员访问权限的变化表: 第7章 继承与派生 派生控制 基类成员 private protected public private 不能访问 不能访问 不能访问 protected private protected protected public private protected public