访问修饰符
来源:互联网 发布:盐枪 淘宝 编辑:程序博客网 时间:2024/06/07 06:46
访问修饰符
- 访问修饰符
- 概述
- 说明
- 继承中的特点
概述
C++语言,支持面向对象编程。在面向对象编程中,需要注意设置好数据访问的权限,即防止对数据进行不合理的访问。而C++语言提供了public、protected、private这三个访问修饰符去设置数据的访问权限,即对数据进行封装。
在类中,通过使用public、protected、private在类中各个区域中进行标记,来指定类成员的访问限制。此外,类成员默认的访问修饰符为private。
说明
public:
设置类成员为公有成员,即对于类的外部是可访问的。
private:
设置类成员为私有成员,即对于类的外部是不可访问的。但是对于友元函数或者对于类的内部是可访问的。
protected:
设置类成员为保护成员,对于类的外部,类似于private,是不可访问的。但是,对于该类的派生类(子类)是可访问的。
继承中的特点
子类继承父类有三种方式:public、protected、private
这三种继承方式会相应地,改变父类成员的访问限制在子类中的表现,如下表所示
注:
1. 表头为父类中类成员的访问修饰符
2. 第一列为子类继承父类的方式
3. 其余单元格为各种继承方式中,父类成员的访问限制在子类中变成何种访问限制
- public 继承
#include <iostream>using namespace std;class father { public: int data1; protected: int data2; private: int data3; public: father():data1(), data2(), data3() { show(); } void show() { cout << "father public data1 : " << data1 << endl; cout << "father protected data2 : " << data2 << endl; cout << "father private data3 : " << data3 << endl; }};class son : public father { // public 继承 public: int data; son():data() { show(); } void show() { cout << "son data : " << data << endl; cout << "son data1 : " << data1 << endl; // 父类的public成员,在子类中为public成员 cout << "son data2 : " << data2 << endl; // 父类的protected成员,子类可以访问,在子类中为protected成员 cout << "son data3 : " << data3 << endl; // error,父类的private成员,子类不可以访问,在子类中为private成员 }};int main(){ son s; cout << "s data : " << s.data << endl; cout << "s data1 : " << s.data1 << endl; cout << "s data2 : " << s.data2 << endl; // error,protected成员,类外部不能访问 cout << "s data3 : " << s.data3 << endl; // error,private成员,类外部不能访问 return 0;}
- protected 继承
#include <iostream>using namespace std;class father { public: int data1; protected: int data2; private: int data3; public: father():data1(), data2(), data3() { show(); } void show() { cout << "father public data1 : " << data1 << endl; cout << "father protected data2 : " << data2 << endl; cout << "father private data3 : " << data3 << endl; }};class son : protected father { // protected 继承 public: int data; son():data() { show(); } void show() { cout << "son data : " << data << endl; cout << "son data1 : " << data1 << endl; // 父类的public成员,在子类中为protected成员 cout << "son data2 : " << data2 << endl; // 父类的protected成员,子类可以访问,在子类中为protected成员 cout << "son data3 : " << data3 << endl; // error,父类的private成员,子类不可以访问,在子类中为private成员 }};int main(){ son s; cout << "s data : " << s.data << endl; cout << "s data1 : " << s.data1 << endl; cout << "s data2 : " << s.data2 << endl; // error,protected成员,类外部不能访问 cout << "s data3 : " << s.data3 << endl; // error,private成员,类外部不能访问 return 0;}
- private 继承
#include <iostream>using namespace std;class father { public: int data1; protected: int data2; private: int data3; public: father():data1(), data2(), data3() { show(); } void show() { cout << "father public data1 : " << data1 << endl; cout << "father protected data2 : " << data2 << endl; cout << "father private data3 : " << data3 << endl; }};class son : private father { // private 继承 public: int data; son():data() { show(); } void show() { cout << "son data : " << data << endl; cout << "son data1 : " << data1 << endl; // 父类的public成员,在子类中为private成员 cout << "son data2 : " << data2 << endl; // 父类的protected成员,子类可以访问,在子类中为private成员 cout << "son data3 : " << data3 << endl; // error,父类的private成员,子类不可以访问,在子类中为private成员 }};int main(){ son s; cout << "s data : " << s.data << endl; cout << "s data1 : " << s.data1 << endl; // error,private成员,类外部不能访问 cout << "s data2 : " << s.data2 << endl; // error,private成员,类外部不能访问 cout << "s data3 : " << s.data3 << endl; // error,private成员,类外部不能访问 return 0;}
阅读全文
0 0
- 访问修饰符
- C#访问修饰符
- c#访问修饰符
- c#访问修饰符
- C#访问修饰符
- 访问修饰符
- java 访问修饰符
- 访问修饰符
- java 访问修饰符
- 访问修饰符
- C#访问修饰符
- 访问修饰符
- 访问修饰符
- 访问修饰符
- C#访问修饰符
- C#访问修饰符
- 访问修饰符
- Java访问修饰符
- C语言中的 static变量、static函数
- 三.Spring中IOC与DI的的区别
- String、StringBuffer、StringBuilder的区别
- radio或者checkbox
- 防止SQL注入的若干笔记
- 访问修饰符
- submit自动提交按钮
- hyperledger fabric 1.0环境搭建出错记录
- CodeForces
- hdu 1873
- 通过URL下载图片并压缩
- .windbg-k*实例分析(查看调用栈分析)
- HDOJ HDU 1141 Factstone Benchmark
- 信号及信号处理