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成员只能在类的内部被访问和调用

十五、类与封装的概念相关推荐

  1. C++ 深度解析教程(五)进阶面向对象、类与封装的概念、类的真正形态

    十三.进阶面向对象(上) 1.你考虑过吗 日常生活中,我们都习惯于对事物进行分类.那么,这种分类的思想是否可以引入程序设计中呢? 2.面向对象基本概念 面向对象的意义在于 将日常生活中习惯的思维方式引 ...

  2. 【C++】 15_类于封装的概念

    类的组合 电脑一般而言是由 CPU, 内存,主板,键盘和硬盘等部件组合而成. 思考: 学习电脑组装需要多少时间? 学习电脑组装是否需要学习显示器,键盘,鼠标,主板,内存等部件的设计与制造? 类的封装 ...

  3. class unity 定义类_Unity 游戏框架搭建 2019 (二十五) 类的第一个作用 与 Obselete 属性...

    在上一篇我们整理到了第七个示例,我们今天再接着往下整理.我们来看第八个示例: #if UNITY_EDITORusing UnityEditor; #endif using UnityEngine; ...

  4. 类的封装(概念,如何封装)

    1.概念 封装是一种信息隐蔽技术. 一是把对象的属性和行为看成一个密不可分的整体,将这两者"封装"在一个不可分割的独立单位.二是指"信息隐蔽"把不需要让外界知道 ...

  5. 第二十五章 面向对象------封装、内置函数、反射、动态导入

    1.封装 什么是封装? 1.对外部隐藏内部的属性,以及实现细节,给外部提供使用的接口 注意:封装有隐藏的意思,但不是单纯的隐藏 学习封装的目的:就是为了能够限制外界对内部数据的访问 python中属性 ...

  6. Python学习笔记整理(十五)类的编写细节

    类代码编写细节 一.class语句 一般形式 class    <name>(superclass,...):     data=value     def mothod(self,... ...

  7. 三十五、虚拟内存的基本概念

    一.知识总览 二.传统存储管理方式的特征.缺点 一次性:作业必须一次性全部装入内存后才能开始运行.这会造成两个问题:首先是作业很大时,不能全部装入内存,导致大作业无法运行.其次是大量作业要求运行时,由 ...

  8. AUTOSAR从入门到精通100讲(三十五)-AUTOSAR BswM三部曲-概念实践代码分析

    概念详解 BSwM模块在AUTOSAR架构中,属于基础软件(BSW)中的系统服务层. 1.BswM简介 BswM即BSW Mode Manager,用一句概括BSW的功能就是接收其他模块的模式请求,判 ...

  9. AI学习笔记(十五)自然语言处理基本概念

    目录 AI学习笔记之自然语言处理 自然语言处理(Natural Language Processing) 自然语言简介 自然语言处理的难点 自然语言处理的现状 基于深度学习的自然语言处理 NLP的处理 ...

最新文章

  1. python svm超参数_grid search 超参数寻优
  2. 一个Web页面的问题分析
  3. Debian的软件包管理工具命令不完全列表
  4. fastdfs笔记_fastdfs基于group的扩容
  5. 阿里“AI搭配师”一秒给你100种穿搭建议,程序员进军女性时尚靠什么?
  6. (附源码)php小型网络舆情平台设计 毕业设计 252324
  7. 前端实现video播放
  8. *(绝对可以安装成功的HUAWEI eNSP模拟器)计算机网络实验(华为eNSP模拟器)——第一章 华为eNSP安装教程
  9. java hsqldb_Hsqldb入门
  10. 外资公司章程标准范本
  11. 面试记录-KPMG(毕马威)
  12. Methods of integrating data to uncover genotype–phenotype interactions 翻译
  13. idea使用帮助文档1
  14. 学云计算比较好的几个论坛
  15. WINFORM时间控件(DATATIMEPICKER)的显示格式设置
  16. 手机发出的邮件可以撤回吗?已发出的邮件撤回后对方能看到吗?
  17. HashMap 的底层原理
  18. 基于Quartus II 软件(VHDL)设计
  19. 秒懂色彩位数:8bit、10bit、12bit(三十)
  20. 常用校验方式以及优缺点(奇偶校验,CRC校验,校验和)

热门文章

  1. ext.ajax.request跨域,跨域Ajax访问header中 x-requested-with丢失
  2. java 解析http返回的xml_Java解析调用webservice服务的返回XML串详解
  3. php 64位编码解码,php base64 编码和解码
  4. css中的单位换算_css大小单位px em rem的转换和详解
  5. Sql Server 2005 分页
  6. go语言一天入门(上)
  7. leetcode538 把二叉搜索树转换成累加树
  8. redis——新版复制
  9. 《UNIX环境高级编程 3rd》笔记(1 / 21):UNIX基础知识
  10. 《Python Cookbook 3rd》笔记(5.6):字符串的 I/O 操作