C++语言程序设计 清华大学郑莉 公有继永(public) 基类的oublic和protected)成员的访问 成员的 属性在派生类中保持不变,但基类的 private)成员不可直接访问。 ● 派生类中的成员函数可以直接访问基类 访问控制 中的public和protected成员,但不能 直接访问基类的private成员。 ● 通过派生类的对象只能访问基类的 public成员
C++语言程序设计 清华大学 郑莉 11 公有继承(public) ⚫ 基类的public和protected成员的访问 属性在派生类中保持不变,但基类的 private成员不可直接访问。 ⚫ 派生类中的成员函数可以直接访问基类 中的public和protected成员,但不能 直接访问基类的private成员。 ⚫ 通过派生类的对象只能访问基类的 public成员。 类 成 员 的 访 问 控 制
C++语言程序设计 清华大学郑莉 例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()freturn X;} float GetY(){return Y;} private:私有数据成员 float X,Y; }; 12
C++语言程序设计 清华大学 郑莉 12 例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; }; 类 成 员 的 访 问 控 制
class Rectangle:public Point /派生类声明 { public: /新增公有函数成员 void InitR(float x,float y,float w,float h) {InitP(x,y);W=w;H=h;}/调用基类公有成员函数 float GetH(){return H; float Getw()freturn W; private: Ⅵ新增私有数据成员 float W,H; ; 13
class Rectangle: public Point //派生类声明 { public: //新增公有函数成员 void InitR(float x, float y, float w, float h) {InitP(x,y);W=w;H=h;}//调用基类公有成员函数 float GetH() {return H;} float GetW() {return W;} private: //新增私有数据成员 float W,H; }; 13
#include<iostream> #include<cmath> using namecpace std; int main() Rectangle rect; rect.InitR(2,3,20,10); 通过派生类对象访问基类公有成员 rect.Move(3,2); cout<<rect.Getx()<<',' <<rect.GetY()<<',' <<rect.GetH()<<',' <<rect.GetW()<<endl; return 0; 3 14
#include<iostream> #include<cmath> using namecpace std; int main() { Rectangle rect; rect.InitR(2,3,20,10); //通过派生类对象访问基类公有成员 rect.Move(3,2); cout<<rect.GetX()<<',' <<rect.GetY()<<',' <<rect.GetH()<<',' <<rect.GetW()<<endl; return 0; } 14
C++语言程序设计 清华大学郑莉 私有继永(private) ● 基类的oublic和protected,成员都以 成员的访问控制 private身份出现在派生类中,但基类 的private成员不可直接访问。 ● 派生类中的成员函数可以直接访问基 类中的oublic和protected成员,但 不能直接访问基类的private,成员。 通过派生类的对象不能直接访问基类 中的任何成员
C++语言程序设计 清华大学 郑莉 15 私有继承(private) ⚫ 基类的public和protected成员都以 private身份出现在派生类中,但基类 的private成员不可直接访问。 ⚫ 派生类中的成员函数可以直接访问基 类中的public和protected成员,但 不能直接访问基类的private成员。 ⚫ 通过派生类的对象不能直接访问基类 中的任何成员。 类 成 员 的 访 问 控 制