【黑马课程C++教程】12-1、类和对象——封装

本文探讨了C++中的封装概念,作为面向对象的三大特性之一,封装允许将属性和行为整合并控制其访问权限。通过设计学生类和立方体类举例,阐述了封装的意义和实践应用,包括成员属性的私有化,以及struct和class在默认访问权限上的差异。
摘要由CSDN通过智能技术生成

在这里插入图片描述
 

12-1.1 封装的意义

封装是C++面向对象三大特性之一
封装的意义:
1、将属性和行为作为一个整体,表现生活中的事物
2、将属性和行为加以权限控制

 

封装意义一:在设计类的时候,属性和行为写在一起,表现事物

语法:class 类名{访问权限:属性 / 行为 };

# include <iostream>
using namespace std;

//圆周率
const double PI = 3.14;

//设计一个圆类,求圆的周长
//圆求周长的公式:2 * PI * 半径

//class代表设计一个类,类后面紧跟着的就是类名称
class Circle {
   
	//访问权限
	//公共权限
public:

	//属性
	//半径
	int m_r;

	//行为
	//获取圆的周长
	double calculateZC() {
   
		return 2 * PI * m_r;
	}
};

int main() {
   
	//通过圆类 创建具体的值(对象)
	//实例化   (通过一个类 创建一个对象的过程)
	Circle c1;
	//给圆对象 的属性进行赋值
	c1.m_r = 10;

	//2 * PI * 10 = 62.8
	cout << "圆的周长为:" << c1.calculateZC() << endl;

	system("pause");
	return 0;
}

在这里插入图片描述
 

案例:设计学生类

设计一个学生类,属性有姓名和学号,可以给姓名和学号赋值,可以显示学生的姓名和学号

# include <iostream>
# include <string>
using namespace std;

//设计一个学生类,属性有姓名和学号
//可以给姓名和学号赋值,可以显示学生的姓名和学号

//设计学生类
class Student {
   
	//访问权限
	//公共权限
public:

	//属性
	string m_Name;    //姓名
	int m_ID;         //学号

	//行为
	//显示姓名和学号
	void showStudent() {
   
		cout << "姓名:" << m_Name << " 学号:" << m_ID << endl;
	}

	//给姓名赋值
	void setName(string name) {
   
		m_Name = name;
	}

	//给学号赋值
	void setId(int id) {
   
		m_ID = id;
	}
};

int main() {
   
	//创建一个具体的学生 实例化对象
	Student s1;
	//给s1对象 的属性进行赋值
	//s1.m_Name = "张三";
	s1.setName("张三");

	//s1.m_ID = 1;
	s1.setId(1);

	//显示学生信息
	s1.showStudent();

	Student s2;
	s2.m_Name = "李四";
	s2.m_ID = 2;
	s2.showStudent();

	system("pause");
	return 0;
}

在这里插入图片描述
注意:类中的属性和行为 我们统一称为 成员
属性 也叫 成员属性 成员变量
行为 也叫 成员函数 成员方法

 

封装意义二:类在设计时,可以把属性和行为放在不同的权限下,加以控制

访问权限有三种:
public 公共权限
protected 保护权限
private 私有权限

# include <iostream>
# include <string>
using namespace std;

//访问权限  三种
//公共权限 public    成员 类内可以访问  类外可以访问
//保护权限 protected 成员 类内可以访问  类外不可以访问 儿子可以访问父亲中的保护内容
//私有权限 private   成员 类内可以访问  类外不可以访问 儿子不可以访问父亲的私有内容

class Person {
   
public:
	string m_Name;    //姓名

protected:
	string m_Car;     //汽车

private:
	int m_Password;   //银行卡密码

public:
	void func(
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值