4、类和对象

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 structclass区别

C++structclass唯一的区别就在于默认的访问权限不同

区别:

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 structclass区别

C++structclass唯一的区别就在于默认的访问权限不同

区别:

struct默认权限为公共

class默认权限为私有

 

4.1.3 成员属性设置为私有

优点1:将所有成员属性设置为私有,可以自己控制读写权限。

优点2:对于写权限,我们可以检测数据的有效性

 

练习案例1:设计立方体类

设计立方体类(Cube

求出立方体的面积和体积

分别用全局函数和成员函数判断两个立方体是否相等。

 

练习案例2:点和圆的关系

设计一个圆形类(Circle),和一个点类(Point),计算点和圆的关系。

posted @   眉间  阅读(31)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示