十五、类与封装的概念
1、类的封装
C++中类的封装:
- 成员变量:C++中用于表示类属性的变量
- 成员函数:C++中用于表示类行为的函数
C++中可以给成员变量和成员函数定义访问级别
public
:成员变量和成员函数可以在类的內部和外界访问和调用private
:成员变量和成员函数只能在类的内部被访问和调用
#include <stdio.h>struct Biology
{bool living;
};struct Animal : Biology
{bool movable;void findFood(){ }
};struct Plant : Biology
{bool growable;
};struct Beast : Animal
{void sleep() { }
};struct Human : Animal
{void sleep() { printf("I'm sleeping...\n");}void work() { printf("I'm working...\n");}
};struct Girl : Human
{
private:int age;int weight;
// private修饰两个属性,定义访问级别为私有public:void print(){age = 22;weight = 48;printf("I'm a girl, I'm %d years old.\n", age);printf("My weight is %d kg.\n", weight);}
};struct Boy : Human
{
private:int height;int salary;
public:int age;int weight;void print(){height = 175;salary = 9000;printf("I'm a boy, my height is %d cm.\n", height);printf("My salary is %d RMB.\n", salary);}
};int main()
{Girl g;Boy b;g.age = 20; // 编译不过g.print(); // 通过print()去访问b.age = 19; // okb.weight = 120;b.height = 180; // errb.print();return 0;
}
2、类成员的作用域
类成员的作用域:
- 类成员的作用域都只在类的内部,外部无法直接访问
- 成员函数可以直接访问成员变量和调用成员函数
- 类的外部可以通过类变量访问
public
成员 - 类成员的作用域与访问级别没有关系
C++中用struct
定义的夫中所有成员默认为 public
#include <stdio.h>int i = 1;struct Test
{
private:int i;public:int j;int getI(){i = 3;return i;}
};int main()
{int i = 2;Test test;test.j = 4;printf("i = %d\n", i); // i = 2;printf("::i = %d\n", ::i); // ::i = 1; 访问默认命名空间,即全局作用域// printf("test.i = %d\n", test.i); // Error, test.i是私有的printf("test.j = %d\n", test.j); // test.j = 4printf("test.getI() = %d\n", test.getI()); // test.getI() = 3return 0;
}
3、小结
类通常可以分为使用方式和内部细节两部分
类的封裝机制使得使用方式和内部细节相分离
C++中通过定义类成员的访问级别实现封装机制
public成员可以在类的内部和外界访问和调用
private成员只能在类的内部被访问和调用
十五、类与封装的概念相关推荐
- C++ 深度解析教程(五)进阶面向对象、类与封装的概念、类的真正形态
十三.进阶面向对象(上) 1.你考虑过吗 日常生活中,我们都习惯于对事物进行分类.那么,这种分类的思想是否可以引入程序设计中呢? 2.面向对象基本概念 面向对象的意义在于 将日常生活中习惯的思维方式引 ...
- 【C++】 15_类于封装的概念
类的组合 电脑一般而言是由 CPU, 内存,主板,键盘和硬盘等部件组合而成. 思考: 学习电脑组装需要多少时间? 学习电脑组装是否需要学习显示器,键盘,鼠标,主板,内存等部件的设计与制造? 类的封装 ...
- class unity 定义类_Unity 游戏框架搭建 2019 (二十五) 类的第一个作用 与 Obselete 属性...
在上一篇我们整理到了第七个示例,我们今天再接着往下整理.我们来看第八个示例: #if UNITY_EDITORusing UnityEditor; #endif using UnityEngine; ...
- 类的封装(概念,如何封装)
1.概念 封装是一种信息隐蔽技术. 一是把对象的属性和行为看成一个密不可分的整体,将这两者"封装"在一个不可分割的独立单位.二是指"信息隐蔽"把不需要让外界知道 ...
- 第二十五章 面向对象------封装、内置函数、反射、动态导入
1.封装 什么是封装? 1.对外部隐藏内部的属性,以及实现细节,给外部提供使用的接口 注意:封装有隐藏的意思,但不是单纯的隐藏 学习封装的目的:就是为了能够限制外界对内部数据的访问 python中属性 ...
- Python学习笔记整理(十五)类的编写细节
类代码编写细节 一.class语句 一般形式 class <name>(superclass,...): data=value def mothod(self,... ...
- 三十五、虚拟内存的基本概念
一.知识总览 二.传统存储管理方式的特征.缺点 一次性:作业必须一次性全部装入内存后才能开始运行.这会造成两个问题:首先是作业很大时,不能全部装入内存,导致大作业无法运行.其次是大量作业要求运行时,由 ...
- AUTOSAR从入门到精通100讲(三十五)-AUTOSAR BswM三部曲-概念实践代码分析
概念详解 BSwM模块在AUTOSAR架构中,属于基础软件(BSW)中的系统服务层. 1.BswM简介 BswM即BSW Mode Manager,用一句概括BSW的功能就是接收其他模块的模式请求,判 ...
- AI学习笔记(十五)自然语言处理基本概念
目录 AI学习笔记之自然语言处理 自然语言处理(Natural Language Processing) 自然语言简介 自然语言处理的难点 自然语言处理的现状 基于深度学习的自然语言处理 NLP的处理 ...
最新文章
- python svm超参数_grid search 超参数寻优
- 一个Web页面的问题分析
- Debian的软件包管理工具命令不完全列表
- fastdfs笔记_fastdfs基于group的扩容
- 阿里“AI搭配师”一秒给你100种穿搭建议,程序员进军女性时尚靠什么?
- (附源码)php小型网络舆情平台设计 毕业设计 252324
- 前端实现video播放
- *(绝对可以安装成功的HUAWEI eNSP模拟器)计算机网络实验(华为eNSP模拟器)——第一章 华为eNSP安装教程
- java hsqldb_Hsqldb入门
- 外资公司章程标准范本
- 面试记录-KPMG(毕马威)
- Methods of integrating data to uncover genotype–phenotype interactions 翻译
- idea使用帮助文档1
- 学云计算比较好的几个论坛
- WINFORM时间控件(DATATIMEPICKER)的显示格式设置
- 手机发出的邮件可以撤回吗?已发出的邮件撤回后对方能看到吗?
- HashMap 的底层原理
- 基于Quartus II 软件(VHDL)设计
- 秒懂色彩位数:8bit、10bit、12bit(三十)
- 常用校验方式以及优缺点(奇偶校验,CRC校验,校验和)
热门文章
- ext.ajax.request跨域,跨域Ajax访问header中 x-requested-with丢失
- java 解析http返回的xml_Java解析调用webservice服务的返回XML串详解
- php 64位编码解码,php base64 编码和解码
- css中的单位换算_css大小单位px em rem的转换和详解
- Sql Server 2005 分页
- go语言一天入门(上)
- leetcode538 把二叉搜索树转换成累加树
- redis——新版复制
- 《UNIX环境高级编程 3rd》笔记(1 / 21):UNIX基础知识
- 《Python Cookbook 3rd》笔记(5.6):字符串的 I/O 操作