4、类和对象
C++面向对象的三大特性为: 封装、继承、多态。
C++认为万事万物都皆为对象,对象上有其属性和行为。
例如:
人可以作为对象,属性有姓名、年龄、身高、体重..., 行为有走、跑、跳、吃饭、唱歌...
车也可以作为对象,属性有轮胎、方向盘、车灯... , 行为有载人、放音乐、放空调....
具有相同性质的对象,我们可以抽象称为类,人属于人类,车属于车类。
4.1 封装
4.1.1 封装的意义
将属性和行为作为一个整体,表现生活中的事物。
将属性和行为加以权限控制。
封装意义一:
在设计类的时候,属性和行为写在一起,表现事物。
【语法】 class 类别{访问权限:属性/行为}
示例1:设计一个圆类,求圆的周长
示例代码
#include <iostream>
using namespace std;
//圆周率 const double PI = 3.14;
class Circle { public: //属性 int m_r;//半径
//行为 //获取圆的周长 double calculateZC() { return 2 * PI * m_r; } };
int main() { //通过圆类,创建圆的对象 //c1就是一个具体的圆 Circle c1; c1.m_r = 10;//给圆对象的半径,进行赋值操作
cout << "圆的周长为:" << c1.calculateZC() << endl;
system("pause");
return 0; } |
示例2:设计一个学生类,属性有姓名和学号,可以给姓名和学号赋值,可以显示学生的姓名和学号。
#include <iostream> #include <string> using namespace std;
class Student { public: //行为(方法) //给学生姓名赋值 void setName(string name) { m_name = name; }
//给学生学号赋值 void setID(int id) { m_id = id; }
//输出学生姓名和ID void showStudent() { cout << "name: " << m_name << "ID: " << m_id << endl; }
//属性 string m_name; int m_id;
};
int main() { Student stu; stu.m_name = "张三";//也可以写成stu.m_name("张三") stu.m_id = 123;//也可以写成stu.m_id(123) stu.showStudent();
system("pause");
return 0; } |
封装意义二:
类在设计时,可以把属性和行为放在不同的权限下,加以控制
访问权限有三种:
1、public公共权限
2、ptotected保护权限
3、private私有权限
示例:
#include <iostream> #include <string> using namespace std;
class Person { //姓名 公共权限 public: string m_Name;
//汽车 保护权限 protected: string m_Car;
//银行卡密码 私有权限 private: int m_Password;
public: void func() { m_Name = "张三"; m_Car = "拖拉机"; m_Password = 123456; }
void showPerson() { cout << "姓名:" << m_Name << endl; cout << "车:" << m_Car << endl; cout << "密码:" << m_Password <<endl; } };
int main() { Person p; p.func(); p.m_Name = "李四"; //p.m_Car = "奔驰";//保护权限类外访问不到 //p.m_Password = 123;//私有权限类外访问不到 p.showPerson();
system("pause");
return 0; } |
4.1.2 struct和class区别
在C++中struct和class唯一的区别就在于默认的访问权限不同
区别:
struct默认权限为公共
class默认权限为私有
#include <iostream> #include <string> using namespace std;
class C1 { int m_A;//默认权限是私有权限 };
struct C2 { int m_A;//默认权限是公共权限 };
int main() { C1 c1; c1.m_A = 10;//错误,访问权限是私有的
C2 c2; c2.m_A = 10;//正确,访问权限是公共
system("pause");
return 0; } |
4.1.3 成员属性设置为私有
优点1:将所有成员属性设置为私有,可以自己控制读写权限。
优点2:对于写权限,我们可以检测数据的有效性
#include <iostream> #include <string> using namespace std;
class Person {
public: //姓名设置可读可写 void setName(string name) { m_Name = name; } string getName() { return m_Name; }
//获取年龄 int getAge() { return m_Age; } //设置年龄 void setAge(int age) { if (age < 0 || age > 150) { cout << "你个老妖精" << endl; return; } m_Age = age; }
//爱人设置为只写 void setLover(string lover) { m_Lover = lover; } private: string m_Name;//可读可写 姓名
int m_Age;//只读年龄
string m_Lover;//只读爱人 };
int main() { Person p; //姓名设置 p.setName("张三"); cout << "姓名:" << p.getName() << endl;
//年龄设置 p.setAge(50); cout << "年龄:" << p.getAge() << endl;
//情人设置 p.setLover("C++"); //cout << "爱人:" << p.m_Lover << endl;//只写属性,不可以读取
system("pause");
return 0; } |
练习案例1:设计立方体类
设计立方体类(Cube)
求出立方体的面积和体积
分别用全局函数和成员函数判断两个立方体是否相等。
练习案例2:点和圆的关系
设计一个圆形类(Circle),和一个点类(Point),计算点和圆的关系。
4、类和对象
C++面向对象的三大特性为: 封装、继承、多态。
C++认为万事万物都皆为对象,对象上有其属性和行为。
例如:
人可以作为对象,属性有姓名、年龄、身高、体重..., 行为有走、跑、跳、吃饭、唱歌...
车也可以作为对象,属性有轮胎、方向盘、车灯... , 行为有载人、放音乐、放空调....
具有相同性质的对象,我们可以抽象称为类,人属于人类,车属于车类。
4.1 封装
4.1.1 封装的意义
将属性和行为作为一个整体,表现生活中的事物。
将属性和行为加以权限控制。
封装意义一:
在设计类的时候,属性和行为写在一起,表现事物。
【语法】 class 类别{访问权限:属性/行为}
示例1:设计一个圆类,求圆的周长
示例代码
示例2:设计一个学生类,属性有姓名和学号,可以给姓名和学号赋值,可以显示学生的姓名和学号。
封装意义二:
类在设计时,可以把属性和行为放在不同的权限下,加以控制
访问权限有三种:
1、public公共权限
2、ptotected保护权限
3、private私有权限
示例:
4.1.2 struct和class区别
在C++中struct和class唯一的区别就在于默认的访问权限不同
区别:
struct默认权限为公共
class默认权限为私有
4.1.3 成员属性设置为私有
优点1:将所有成员属性设置为私有,可以自己控制读写权限。
优点2:对于写权限,我们可以检测数据的有效性
练习案例1:设计立方体类
设计立方体类(Cube)
求出立方体的面积和体积
分别用全局函数和成员函数判断两个立方体是否相等。
练习案例2:点和圆的关系
设计一个圆形类(Circle),和一个点类(Point),计算点和圆的关系。
标签:cout,对象,int,私有,权限,class,属性 From: https://www.cnblogs.com/hhkhhx/p/17259581.html