小朋友学C++(4):public, protected, private
来源:互联网 发布:建行软件下载 编辑:程序博客网 时间:2024/04/30 04:03
面向对象有三大特征:封装、继承、多态。(具体会在之后的课程里讲)
C++用三个关键词来表示访问范围:public, protected, private。
public和private作用就是实现封装。类外的代码可以访问public成员而不能访问private成员;private成员只能由类成员访问。
protected的作用则是实现继承。protected成员可以被派生类(也叫子类)对象访问,不能被用户代码类外的代码访问。
例1:private修饰属性和方法
#include <iostream>using namespace std;class Dog{ private: string name; void run() { cout << "running..." << endl; }};int main(){ Dog dog; dog.name = "Wang Cai"; dog.run(); return 0;}
编译程序,报错:
这是因为,name和run()都是私有的,类外的main()没有权限访问dog.name和dog.run()
例2:将private改为protected
#include <iostream>using namespace std;class Dog{ protected: String name; void run() { cout << "running..." << endl; }};int main(){ Dog dog; dog.name = "Wang Cai"; dog.run(); return 0;}
编译程序,报错:
报错理由跟上面的差不多,因为name和run()是protected, 外部的main()没有权限访问。
例3:将protected改为public
#include <iostream>using namespace std;class Dog{ public: string name; void run() { cout << "running..." << endl; }};int main(){ Dog dog; dog.name = "Wang Cai"; dog.run(); return 0;}
程序正常运行。运行结果:
running...
有些人可能会想,我不加任何关键字,后果会怎样?
例4:不加修饰符
#include <iostream>using namespace std;class Dog{ string name; void run() { cout << "running..." << endl; }};int main(){ Dog dog; dog.name = "Wang Cai"; dog.run(); return 0;}
编译报错,错误与例1相同:
可见如果不加任何关键字,无论是属性还是方法,默认都是private。
更多内容请关注微信公众号
阅读全文
0 0
- 小朋友学C++(4):public, protected, private
- C++-public,protected,private
- 【C++】public protected private
- C++private,protected,public。
- C#---public-private-protected-internal
- objective-c @private @protected @public
- C#public/protected/private/internal/protected internal
- object-c的存取权限(public/protected/private)
- (C++)public private protected 的解释说明
- public,private,protected 区别和作用(C++)
- C#public private protected关键字总结
- C#public private protected关键字总结
- Objective-C中@private、@protected、@public 解析
- public,private,protected 区别和作用(C++)
- C#public private protected关键字总结
- Objective-C中@private、@protected、@public 解析
- Objective-C中@private、@protected、@public 解析
- objective-c 与 protected public private关键字
- MATLAB学习笔记01——基本命令和矩阵
- 消息队列原理及activeMQ基本知识点
- RabbitMQ Hello World
- Windows API入门系列之七 -完善MessageBox
- 自定义View学习笔记(一)
- 小朋友学C++(4):public, protected, private
- 使用Maven自动构建项目配置文件
- 可执行的整站seo优化步骤
- 文本处理笔记
- python3操作mysql数据库
- 小朋友学C++(5):构造函数
- 小朋友学C++(6):this指针
- 面向对象:愿有一人,令我喜你成疾,药石无医
- 趣图:在 2G 内存电脑上运行 Android Studio