首页 > 其他分享 >2.1封装

2.1封装

时间:2024-03-17 14:33:29浏览次数:30  
标签:封装 private class 访问 2.1 权限 public 属性

封装是C++面向对象三大特征之一

1、封装的意义

封装实现了类的接口和实现的分离。
封装后的类隐藏了它的实现细节,也就是说,类的用户只能是使用接口而无法访问实现部分。

意义:

1、将属性和行为作为一个整体,表现生活中的事物。
在设计类的时候,属性和行为写在一起,表现事物。
语法:class 类名 { 访问权限: 属性 / 行为 };

示例1:设计一个圆类,求圆的周长

第一步,设计圆的类
包括:1.访问权限,2.属性,3.行为

class Circle
{
	//访问权限————公共权限
public:
	//属性————半径
	int m_r;
	//行为————获取圆的周长
	double calculateZC()
	{
		return 2 * PI * m_r;
	}
};

第二步:实例化一个圆的对象

//通过圆类,创建一个具体的圆
Circle c1;
//给圆的对象c1 的属性进行赋值
c1.m_r = 10;
//行为
cout << "圆的周长为:" << c1.calculateZC() << endl;

2、将属性和行为加以权限控制。
类在设计时,可以把属性和行为放在不同的权限下,加以控制

C++中使用访问说明符(access specifiers)来加强类的封装性!

每个访问说明符指定了接下来的成员的访问级别,其有效范围直到出现下一个访问说明符 或者 到达类的结尾处为止。

三种访问权限:

public1、public 公共权限

类内可以访问,类外可以访问
public说明符之后的成员在整个程序内可以被访问, public成员定义类的接口。

protected 2、protected 保护权限

类内可以访问,类外不可以访问

private3、private 私有权限

类内可以访问,类外不可以访问
定义在private说明符之后的成员可以被 类的成员函数访问, 但不能被使用该类的代码访问, 也就是说,private部分封装了类的实现细节

2、struct和class区别

struct 和 class 的默认访问权限不太一样。(是唯一区别!)

类可以在它的第一个访问说明符之前定义成员,对这种成员的访问权限依赖于类定义的方式。
如果我们使用struct关键字,则定义在第一个访问说明符之前的成员是public;
即:struct默认权限为公共

如果我们使用class关键字,则这些成员是private的。
即:class默认权限为私有
处于统一编程风格的考虑,当我们希望定义的类的所有成员是public的时,使用struct。
反之,如果希望成员是private的,使用class。

3、成员属性设置为私有

优点1:将所有成员属性设置为私有,可以自己控制读写权限。
企业开发的思路:提供一些公有的方法,对这些私有的属性进行读写的控制。
如:

class Person {

public:
	//姓名设置可读可写
	void setName(string name) {
		m_Name = name;
	}
	string getName()
	{
		return m_Name;
	}
	
private:
	string m_Name; //可读可写  姓名
	int m_Age; //只读  年龄
};
}

m_Name 和 m_Age 都是私有的(private),外界不能直接调用它们。
我们可以通过设置一些public的函数setName()和getName()来对private的属性进行控制。

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

标签:封装,private,class,访问,2.1,权限,public,属性
From: https://www.cnblogs.com/H43724334/p/18077617

相关文章

  • AntSK 0.2.1 版本揭秘:动态加载dll,驱动Function Call新境界!
        在.NET的无限宇宙中,动态加载dll似乎一直是操控代码生生不息的魔杖。今天,我将与您探讨如何通过AntSK0.2.1版本灵活运用dll,将FunctionCall的强大功能插拔自如地融入项目之中,我们走入插件化开发的全新篇章。新版本简介       AntSK,这个曾被我们广泛探讨过的......
  • vue 3+TS 封装自定义右键全局菜单(虚拟节点)
    有时我们需要点击(右键或左键)某个元素时弹出菜单,实现复制、粘贴、删除等功能。本文将介绍如何封装一个自定义的右键全局菜单(无三方依赖)。封装的菜单可自定义菜单项,图标,禁用,分割线,隐藏等。并且可以在全局任意地方使用。源码在文章末尾。效果使用<template><div>......
  • 2.1HTML5基本结构
      HTML5实际上不算是一种编程语言,而是一种标记语言。HTML5文件是由一系列成对出现的元素标签嵌套组合而成,这些标签以<元素名>的形式出现,用于标记文本内容的含义。浏览器通过元素标签解析文本内容并将结果显示在网页上,而元素标签本身并不会被浏览器显示出来。HTML5文档的基......
  • 2.1获取文件的属性
    点击查看代码importtime,osdeftimestamp_to_string(timestamp):vtime=time.localtime(timestamp)vdatetime=time.strftime('%Y-%m-%d%H:%M:%S',vtime)returnvdatetimedefbytetoM(size):vsize=size/float(1024*1024)returnround(v......
  • Vue — 请求模块、api模块封装
    1.请求模块importaxiosfrom'axios'constrequest=axios.create({  baseURL:'',//请求的域名地址  timeout:5000,})request.interceptors.request.use((config)=>{  //开启loading禁止背景点击  returnconfig},(err)=>{  returnPro......
  • US1M/US1G-ASEMI高效快恢复二极管SMA封装
    编辑:llUS1M/US1G-ASEMI高效快恢复二极管SMA封装型号:US1M/US1G品牌:ASEMI封装:SMA最大平均正向电流(IF):1A最大循环峰值反向电压(VRRM):1000V最大正向电压(VF):1.1V工作温度:-55°C~150°C反向恢复时间:100ns重量:0.064克芯片个数:1芯片尺寸:50mil正向浪涌电流(IFMS):30AUS1M/US1G特性:......
  • 肖sir_搭项目实战之电商_22.1
    一、了解电商(架构组成)https://www.cnblogs.com/xiaolehong/protected/p/17503385.html  二、参考链接电商(用户端、运营端、商家端)https://www.axureshop.com/ys/2266518讲解前端:a、https://www.axureshop.com/ys/2132110电商的前端b、https://www.woshipm.com/ev......
  • Vue3——axios 安装和封装
    axios安装和封装安装npminstallaxios最后通过axios测试接口!!!axios二次封装在开发项目的时候避免不了与后端进行交互,因此我们需要使用axios插件实现发送网络请求。在开发项目的时候我们经常会把axios进行二次封装。目的:1:使用请求拦截器,可以在请求拦截器中处理......
  • 封装动态生成二维码组件
    1.封装一个根据内容动态生成二维码的组件2.效果图如下3.实现方式有多种展示两种 使用QRCode插件使用vue-qr插件4.组件API 1.logoSrc设置二维码中心logo 4.组件API5.组件代码 QRCode<template><divclass="count-to-wrapper"><divref="canvas......
  • 2.1_3 奈氏准则和香农定理
    文章目录2.1_3奈氏准则和香农定理(一)失真(二)失真的一种现象——码间串扰(三)奈氏准则(奈奎斯特定理)(四)香农定理(五)“Nice”和“香浓”2.1_3奈氏准则和香农定理(一)失真有失真但可识别失真大无法识别影响失真程度的因素  1.码元传输速率  码元传输速率越快,越会......