44、继承的方式
来源:互联网 发布:网络女神pans瑞思视频 编辑:程序博客网 时间:2024/05/08 09:44
当一个类从另一个类继承时,子类能够从父类继承到的是父类的公有类型的成员属性和成员方法,以及保护类型的成员属性和成员方法。这些子类从父类继承得到的属性和方法,在子类中是什么类型?
这个问题与派生类的定义有关,基类的说明前有public、protected和private进行说明,将从父类继承来的属性和方法定义为不同的类型。
如果基类是由public关键字说明,那么派生类的对象能够直接使用基类中定义的公有类型的成员属性和成员方法,也就是基类中公有类型和方法也当做派生类的公有类型的变量来使用。而原来基类中的保护类型的属性和方法,在派生类中,也当作保护类型的属性和方法,对于这些保护类型的属性和方法,也只能在自身内部使用。
如果基类是由private关键字来指定,那么继承来的属性和方法,不管在父类中什么类型,派生类都只能用作内部数据和处理过程,也就是说,在派生类中,所有继承而来的属性和方法都是私有类型的。
如果基类是由protected来进行说明的话,那么子类从父类继承而来的所有属性和方法,将在子类中被当做保护类型的数据。
例1:子类由基类继承时由关键字 public 说明
//子类由基类继承时由关键字 public 说明#include<iostream>class Point{private: int data;protected: int X,Y;public: void SetXY(int x,int y); void GetXY(int &x,int &y);};void Point::SetXY(int x,int y){ X=x; Y=y;}void Point::GetXY(int &x,int &y){ x=X; y=Y;}class ColorPoint:public Point{public: int Color;};void main(){ ColorPoint Cp; Cp.SetXY(10,20); int x,y; Cp.GetXY(x,y); Cp.Color=1; std::cout<<"Point is ("<<x<<","<<y<<")"<<std::endl; std::cout<<"Color is "<<Cp.Color<<std::endl;}
例2:子类由基类继承时由关键字 private 说明
//子类由基类继承时由关键字 private 说明#include<iostream>class Point{private: int data;protected: int X,Y;public: void SetXY(int x,int y); void GetXY(int &x,int &y);};void Point::SetXY(int x,int y){ X=x; Y=y;}void Point::GetXY(int &x,int &y){ x=X; y=Y;}class ColorPoint:private Point{public: int Color; void Set(int x,int y); void Get(int &x,int&y);};void ColorPoint::Set(int x,int y){ SetXY(x,y);}void ColorPoint::Get(int &x,int &y){ GetXY(x,y);}void main(){ ColorPoint Cp; Cp.Set(10,20); //不可再用Cp.SetXY(10,20);没有访问权限 int x,y; Cp.Get(x,y); //不可再用 Cp.GetXY(x,y); Cp.Color=1; std::cout<<"Point is ("<<x<<","<<y<<")"<<std::endl; std::cout<<"Color is "<<Cp.Color<<std::endl;}
0 0
- 44、继承的方式
- 类的继承方式
- javascript的继承方式
- 类的继承方式
- JS的继承方式
- C++的继承方式
- JS的继承方式
- 类的继承方式
- C++的继承方式
- 继承的实现方式
- 单继承的方式
- JavaScript继承的方式
- js的继承实现方式
- 关于继承的方式测试
- javascript继承对象的方式
- 虚拟继承的定义方式
- javascript实现继承的方式
- javascript实现继承的方式
- 推荐算法简述
- 将本地mysql数据库表格导入到odps大数据计算服务项目中
- Python PyInstaller 安装方法 及简单的编译exe
- Professional C++ 02 Designing Professional C++ Programs 设计专业的C++程序
- springmvc + h5(进度条)文件上传
- 44、继承的方式
- 【Leetcode】371. Sum of Two Integers
- CSS的坎坷之路
- 策略模式
- 获取CTreeCtrl树控件某个节点的路径
- 数据接收软件中的《如何快速稳定进行数据存储》附源代码
- 浏览器的渲染原理简介
- Vuex2.0边学边记+两个小例子
- 图形调试工具收集