c++面向对象的三大特性为:继承、封装和多态
c++认为万事万物都皆为对象,对象上有其属性和行为
例如:
人可以作为对象,属性有姓名、年龄、身高、体重…,行为有走、跑、跳、吃饭、唱歌⋯
车也可以作为对象,属性有轮胎、方向盘、车灯…行为有载人、放音乐、放空调…
具有相同性质的对象,我们可以抽象称为类,人属于人类,车厲于车类
1.封装
1.1封装的意义
封装是c++面向对象的三大特性之一
封装的意义:
- 将属性和行为作为一个整体,表现生活中的事物
- 将属性和行为加以权限控制
封装意义一:
在设计类的时候,属性和行为写在一起,表现事物
语法:class 类名{ 访问权限:属性 / 行为 };
实例代码:
#include <iostream> using namespace std; const double PI = 3.14; class Circle { public: int m_r; double calculate_ZC() { return 2 * PI * m_r; } }; int main() { //实例化:通过一个类,创建一个对象的过程 Circle c1; c1.m_r = 10; cout << "圆的周长为:" << c1.calculate_ZC() << endl; return 0; }
封装意义二:
类在设计时,可以把属性和行为放在不同的权限下,加以控制
访问权限有三种:
(1)public 公共权限
(2)protected 保护权限
(3)private 私有权限
实例代码:
#include <iostream> #include <string> using namespace std; class Student { //属性 public: string m_name; int m_age; //行为 public: void setName(string name) { m_name = name; } void setAge(int age) { m_age = age; } void showStu() { cout << "学生姓名:" << m_name << endl << "学生年龄:" << m_age << endl; } }; int main() { Student s1; s1.setName("张三"); s1.setAge(18); s1.showStu(); }
1.2struct和class的区别
c++中struct和class唯一的区别就在于默认的访问权限不同
区别:
- struct默认权限为公共
- class默认权限为私有
1.3成员属性设置为私有
优点一:将所有成员属性设置为私有,可以自己控制读写权限
优点二:对于写权限,我们可以检测数据的有效性
实例代码:
#include<iostream> #include<string> using namespace std; class Person { private: string m_name; //姓名 可读可写 int m_age = 18; //年龄 只读 string m_addr; //地址 只写 public: void setName(string name) { m_name = name; } string getName() { return m_name; } int getAge() { return m_age; } void setAddr(string addr) { m_addr = addr; } private: void showStu() { cout << "姓名:" << m_name << "年龄:" << m_age << endl; } }; int main() { Person p1; p1.setName("张三"); cout << "姓名:" << p1.getName() << endl; cout << "年龄:" << p1.getAge() << endl; }
标签:属性,封装,string,多态,c++,权限,class,name From: https://www.cnblogs.com/eisenshu/p/18056876