类通常分为以下两部分

  • -内部具体实现
  • -外部使用方法

比如:

用户使用手机,只需要知道如何使用.

手机开发者,则需要考虑手机内部的实现细节.

类的封装

并不是类的每个成员变量和成员函数都要对外公开

比如:

女孩不希望外人知道自己的体重weight和年龄age

男孩不希望外人知道自己的身高height和工资salary

而某些属性是对外公开的

比如:姓名,学历,国籍等.

所以在类里,可以给成员变量和成员函数定义访问级别:

  • -public   公开成员,允许成员变量和成员函数可以被类内部和外界使用(默认为public)
  • -private   私有成员,只能被类内部使用

类成员的作用域

类成员的作用域都只在类的内部,外部无法直接访问

成员函数可以直接访问成员变量调用成员函数

类的外部可以通过类变量访问public成员

类成员的作用域访问级别没有关系

参考如下代码:

#include <stdio.h>

int i = ;          //定义全局变量

struct Test
{
private:
int i; //定义私有成员变量i public:
int j; int getI()
{
i = ;
return i;
}
}; int main()
{
int i = ; //定义局部变量i Test test; test.j = ; printf("i = %d\n", i); // i = 2; 使用局部变量 printf("::i = %d\n", ::i); // ::i = 1;使用全局变量 // printf("test.i = %d\n", test.i);// Error 访问私有成员,出错 printf("test.j = %d\n", test.j); //test.j = 4 printf("test.getI() = %d\n", test.getI());
// test.getI()=3 通过公开成员,去访问私有成员
return ;
}

小结

类通常分为使用方法内部细节两部分

类的封装机制(public/private)使得使用方法和内部细节相分离

7.C++类与封装的概念的更多相关文章

  1. JavaScript 类的封装以及实现

    类的封装: JavaScript 不是一门面向对象的语言,也不支持类的封装,但是我们可以利用闭包函数的概念去实现类的封装. // 在 Function 内部声明一个闭包函数(对象方法) functio ...

  2. JAVA进阶之旅(二)——认识Class类,反射的概念,Constructor,Field,Method,反射Main方法,数组的反射和实践

    JAVA进阶之旅(二)--认识Class类,反射的概念,Constructor,Field,Method,反射Main方法,数组的反射和实践 我们继续聊JAVA,这次比较有意思,那就是反射了 一.认识 ...

  3. Java面向对象 第3节 类的封装和继承

      一.封装 封装的概念:将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的访问和操作. 封装的2个大致原则:1)把尽可能多的东西隐藏起来,对外提供便捷的接口 ...

  4. 09_Java面向对象_第9天(类、封装)_讲义

    今日内容介绍 1.面向对象思想 2.类与对象的关系 3.局部变量和成员变量的关系 4.封装思想 5.private,this关键字 6.随机点名器 01面向对象和面向过程的思想 A: 面向过程与面向对 ...

  5. 1、类、封装(私有private、this关键字)

    类与对象 对象在需求中的使用 ​ 对面向对象有了了解之后,我们来说说在具体问题中如何使用面向对象去分析问题,和如何使用面向对象. ​ 我们把大象装冰箱为例进行分析. ​ 在针对具体的需求,可以使用名词 ...

  6. 抽象类,接口类,封装,property,classmetod,statimethod

    抽象类,接口类,封装,property,classmetod,statimethod(类方法,静态方法) 一丶抽象类和接口类 接口类(不崇尚用) 接口类:是规范子类的一个模板,只要接口类中定义的,就应 ...

  7. Python菜鸟之路:Python基础-类(1)——概念

    什么是类? 在python中,把具有相同属性和方法的对象归为一个类(class).类是对象的模板或蓝图,类是对象的抽象化,对象是类的实例化.类不代表具体的事物,而对象表示具体的事物. 类的创建 cla ...

  8. Java面向对象(类、封装)

    面向对象 今日内容介绍 u 面向对象 u 封装 第1章 面向对象 1.1 理解什么是面向过程.面向对象 面向过程与面向对象都是我们编程中,编写程序的一种思维方式. l 面向过程的程序设计方式,是遇到一 ...

  9. 类的封装,property特性,类与对象的绑定方法和非绑定方法,

    类的封装 就是把数据或者方法封装起来 为什么要封装 封装数据的主要原因是:保护隐私 封装方法的主要原因是:隔离复杂度(快门就是傻瓜相机为傻瓜们提供的方法,该方法将内部复杂的照相功能都隐藏起来了,比如你 ...

随机推荐

  1. iOS-隐藏Navigation导航栏线

    去除navigationBar上那条线: ///隐藏navigationBar导航栏线(直接写在UINavigationController-viewDidLoad方法里面即可) UIView *ba ...

  2. (转)Elasticsearch 5 Ik+pinyin分词配置详解

    今天以这篇文章结束同城旅游网的面试,正好面试官也问到站内检索,可以尝试一下这篇文章介绍的方法.Elasticsearch 5 Ik+pinyin分词配置详解

  3. quartz的一些记录

    定时任务总会遇到任务重叠执行的情况,比如一个任务1分钟执行一次,而任务的执行时间超过了1分钟,这样就会有两个相同任务并发执行了.有时候我们是允许这种情况的发生的,比如任务执行的代码是幂等的,而有时候我 ...

  4. Golang常用包

    fmt 实现了格式化IO函数,格式化短语派生于C io 提供了原始的io操作 bufio 这个包实现了缓冲的io,io.Reader 和 io.Write 对象 sort 对数组和用户定义集合的原始的 ...

  5. 微信小程序开发《一》:阿里云tomcat免费配置https

    小狼咕咕最近开启了微信小程序开发的征程,由于微信小程序的前后台通信必须通过https协议,所以小狼咕咕第一件要做的事就是配置一个能够通过https访问的后台服务.小狼咕咕用的是阿里云ECS服务器,Li ...

  6. 洛谷 [P1020] 导弹拦截 (N*logN)

    首先此一眼就能看出来是一个非常基础的最长不下降子序列(LIS),其朴素的 N^2做法很简单,但如何将其优化成为N*logN? 我们不妨换一个思路,维护一个f数组,f[x]表示长度为x的LIS的最大的最 ...

  7. 洛谷 [P1341]无序字母对

    这道题第一眼以为是一道字符串的题,但细想一下是一道求欧拉路的图论题. 把每一对对应关系看成一条边,本题即求这张图上是否存在一个欧拉回路或欧拉路,并要求字典序最小的方案,那么我们在dfs的时候就要从该点 ...

  8. 使用angular/react/vue实现相同的面试题组件

    面试题要求如下所示 1.angular: <!DOCTYPE html><html lang="en"><head> <meta char ...

  9. 【深度学习】批归一化(Batch Normalization)

    BN是由Google于2015年提出,这是一个深度神经网络训练的技巧,它不仅可以加快了模型的收敛速度,而且更重要的是在一定程度缓解了深层网络中"梯度弥散"的问题,从而使得训练深层网 ...

  10. 【SSH框架】之Hibernate系列一

    微信公众号:compassblog 欢迎关注.转发,互相学习,共同进步! 有任何问题,请后台留言联系! 1.Hibernate框架概述 (1).什么是HibernateHibernate是一个开放源代 ...