§7.2C++语言的继承机制 ◆分析公有继承方式 1、基类成员对其对象的可见性: 公有成员可见,其他不可见,保护成员同于私有成员 2、基类成员对派生类的可见性: 公有成员和保护成员可见,私有成员不可见,保护成员同 于公有成员 e3、基类成员对派生类对象的可见性: 公有成员可见,其他成员不可见 结论:派生类的对象可以访问基类中的公有成员; 派生类的成员函数可以访问基类中的公有成员和保护成员
§7.2 C++语言的继承机制 分析公有继承方式 1、基类成员对其对象的可见性: 公有成员可见,其他不可见,保护成员同于私有成员 2、基类成员对派生类的可见性: 公有成员和保护成员可见,私有成员不可见,保护成员同 于公有成员 3、基类成员对派生类对象的可见性: 公有成员可见,其他成员不可见 结论:派生类的对象可以访问基类中的公有成员; 派生类的成员函数可以访问基类中的公有成员和保护成员
claSS base publ void setA(int al)a=al; j void setb(int bl)(b=bl protected lI prTv class DERIVED public BASE publ void setc(int cl)c=cl; y void setD(int di)(d=dI; void set A(int al)a=al; / void set B(int bl)(b=bl; /V rotected pr Int private Int c
例 class BASE { public: void setA(int al) {a=al;} void setB(int bl) {b=bl;} protected: int b; private: int a; }; class DERIVED:public BASE { public: void setC(int cl) {c=cl;} void setD(int dl) {d=dl;} void set_A(int al) {a=al;} // void set_B(int bl) {b=bl;} // protected: int d; private: int c; };
§7.2C++语言的继承机制 BaSE objl DERIVED obj2 ∥派生类对象可以访问基类的公有成员 obj2 setA(1) obj2 setB(2) 以直接访问派生类的公有成员 obj2 setC(3) obj2 setD(4)
§7.2 C++语言的继承机制 BASE obj1; DERIVED obj2; //派生类对象可以访问基类的公有成员 obj2.setA(1); obj2.setB(2); //可以直接访问派生类的公有成员 obj2.setC(3); obj2.setD(4);
例:定义BOX类描述立方体,定义 COLORBOX类描述彩色立方体 class boX void main( public void setwidth (int w)width=w;) COLORBOX cbox void setheight(int h)height=h; cbox setcolor(3); int getwidtho return width; 1 cbox setwidth(150) int getheight(return height; cbox setheight(100) private int width, height cout<<cbox: <<endl cout<< Color: <<cbox. getcolor( class COlorBOX public BOX cout<<Width <<cbox. getwidtho public cout<< Height: <<cbox getheight( void setcolor(int c)(color=c; 1 <<endl int getcolor((return color private int color
例:定义BOX类描述立方体,定义COLORBOX类描述彩色立方体 class BOX { public: void setwidth(int w) {width=w;} void setheight(int h) {height=h;} int getwidth( ) {return width;} int getheight( ) {return height;} private: int width,height; }; class COLORBOX:public BOX { public: void setcolor(int c) {color=c;} int getcolor( ) {return color;} private: int color; }; void main( ) { COLORBOX cbox; cbox.setcolor(3); cbox.setwidth(150); cbox.setheight(100); cout<<“Cbox:”<<endl; cout<<“Color:”<<cbox.getcolor( ) <<endl; cout<<“Width:”<<cbox.getwidth( ) <<endl; cout<<“Height:”<<cbox.getheight( ) <<endl; }
§7.2C++语言的继承机制 访问控制小结 public继承方式) 基类成员的对派生类成员对派生类对象在派生类中的 访问控制的可访问性的可访问性访问控制 pu ublic 可访问 可访问 publIc protected可访问不可访问 protected private不可访问不可访间 private
§7.2 C++语言的继承机制 访问控制小结 (public继承方式) 基类成员的 访问控制 对派生类成员 的可访问性 对派生类对象 的可访问性 在派生类中的 访问控制 public 可访问 可访问 public protected 可访问 不可访问 protected private 不可访问 不可访问 private