既然是学习面向对象的编程那自然要了解面向对象中的三大基石,封装、继承和多态。

我觉得要解释这三大基本概念用一篇文档很难解释清楚,想要具体形象的去了解,还是需要每一个概念用一个篇幅来说明,将封装、继承和多态的思想理解好,对我们后面程序设计会有很大的帮助,达到很好的代码复用,开发的效率、拓展性会大大提高,工作量也会随之减少。

封装在面向对象程序的设计中的第一步,其核心的思想就是将客观的事物,封装成抽象的类,以类为单位,并且可以控制哪些属性哪些行为对于外部的类或者对象可见,对不需要别人知道的信息、行为进行相应的隐藏。

下面举一个生活中例子来说明封装的概念:

电视机是我们生活中很经常使用的,电视机从一个个电子元件的拼装到最后成形其实需要经过很多的处理程序,最后成形我们使用的时候并不需要去管它中间过程是如何实现的,我们只需要接好电源,插好线,给我们一个遥控让我们可以换台、调音量,以及各种的设置,电视机从一开始制造到我们手中正常使用的这个过程就符合我们面向对象中的封装的概念。一台电视机的核心就是那么几块电路板+显示屏,我们作为一个使用者我们并不需要去知道它的核心是怎样实现的,不用去管它用了什么显示的技术,不需要考虑怎么焊接,用几颗电容,电路集成度等,对于我们而言只需要知道怎么通电,开关在哪里,怎么换台调频道等等,这就体现了良好的封装特性。

(一台封装好的电视,对于核心的零件、技术封闭的,但是对于外部的操作如换台、调音量是开放的)

从上面的例子中可以总结一下封装的概念:

  1.当我们设计一个程序的时候,将不想给外部的对象、类看到的信息隐藏,如电视机的电路板、电子元件等。

  2.将对外部需要别人看到的信息或功能暴露出来,如使用遥控器换台、调节音量等。

对于一个封装性很好的类来说引起这个类的变化只有一种。详细点说就是当你设计一个类的时候应该把和此类相关的行为属性都添加在一起,不要将很多不相关的功能行为集中在一个类,这样的话引起类的变化就可能有多种了,就会造成类的污染,很容易在修改其它不相关功能的同时而修改了这个类。

封装的概念相对是比较好理解的,其实在面向对象的编程中,很多的概念都是与生活中的例子相关,在学习了具体的代码后应该多点思考概念。

C#基础知识-编程思想之封装(七)的更多相关文章

  1. 1.Java基础-面向对象编程思想(封装继承多态接口)

    封装: 1.定义:隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别. 2.封装的目的是:增强安全性和简化编程,使用者不必了解具体的实现细节,而只是要通过外部接口,一特定的 ...

  2. C#基础知识-面向对象思想之继承(八)

    上一篇的标题编程思想我觉得不是很符合主题,因为编程思想的范围太大了,不仅仅是封装 继承 多态,所以比较符合主题的应该是面向对象思想.这一篇中将继续叙述面向对象思想中的继承. 从字面来看继承表达的意思已 ...

  3. JS基础语法---编程思想和对象

    编程思想: 把一些生活中做事的经验融入到程序中 面向过程:凡事都要亲力亲为,每件事的具体过程都要知道,注重的是过程 面向对象:根据需求找对象,所有的事都用对象来做,注重的是结果 面向对象特性: 封装, ...

  4. Java基础知识二次学习--第七章 容器

    第七章 容器   时间:2017年4月27日15:08:30 章节:07章01节~07章04节 视频长度:20:21 +12:38 +3:55 +2:57 内容:容器API 心得: Java API ...

  5. Java编程思想(第4版) 中文清晰PDF完整版

    Java编程思想(第4版) 中文清晰PDF完整版 [日期:2014-08-11] 来源:Linux社区  作者:Linux [字体:大 中 小]     <Java编程思想>这本书赢得了全 ...

  6. 《Java编程思想第四版完整中文高清版.pdf》-笔记

    D.2.1 安插自己的测试代码 插入下述“显式”计时代码,对程序进行评测: long start = System.currentTimeMillis(); // 要计时的运算代码放在这儿 long ...

  7. Python黑帽编程3.0 第三章 网络接口层攻击基础知识

    3.0 第三章 网络接口层攻击基础知识 首先还是要提醒各位同学,在学习本章之前,请认真的学习TCP/IP体系结构的相关知识,本系列教程在这方面只会浅尝辄止. 本节简单概述下OSI七层模型和TCP/IP ...

  8. [.net 面向对象编程基础] (11) 面向对象三大特性——封装

    [.net 面向对象编程基础] (11) 面向对象三大特性——封装 我们的课题是面向对象编程,前面主要介绍了面向对象的基础知识,而从这里开始才是面向对象的核心部分,即 面向对象的三大特性:封装.继承. ...

  9. C# 基础知识 (一).概念与思想篇

    在C#中有一些我自己认为比较独特的知识点,这些知识点是我经常使用的知识,但对它们的了解还是比较少的,所以通过查找资料学习,总结了这些独特的知识点并简单叙述,第一篇主要是一些概念和思想方面的知识.(后面 ...

随机推荐

  1. 判断是否是IE(包含IE11)

    判断是否是IE(包含IE11) if(!!window["ActiveXObject"] || "ActiveXObject" in window) { ale ...

  2. 如何使用LightningChart拖放功能进行数据转移 ?

    本文主要介绍如何使用LightningChart扩展拖放功能为所有图表组件创建图表,如:系列,标题,轴线等等.支持用鼠标放置自定义对象到另一个图表中,如:可以添加或修改JSON/CSV或其他格式的数据 ...

  3. DCN路由操作

    offset */interface in/out access-list/prefix-list <1-16>                 // 修改路由偏移量   RIP偏移列表 ...

  4. C语言编码风格_集锦_1

    参考原地址: http://www.jb51.net/article/79257.htm <一> 在一个标准的C语言程序中, 最特殊的莫过于main函数了. 函数大体上分为内联函数(C99 ...

  5. Android5.0水波纹效果ripple实现

    1.如何设置波纹效果 // 波纹有边界 android:background="?android:attr/selectableItemBackground" // 波纹超出边界 ...

  6. CSS3-渐变背景色

    线性渐变背景色: <style> .linear { width:130px; height:130px; border:2px solid black; padding: 10px; b ...

  7. C++实现的控制台-贪吃蛇

    周六终于可以抽出一整段时间了 想了想就写个贪吃蛇吧    第一次写 差不多下了140行  也不算太多吧 以后ACM比赛是在做不来就自己打个贪吃蛇玩 ps:本来想写个项目的 但是为了方便你们阅读 就写在 ...

  8. MySql字符串函数使用技巧

    1.从左开始截取字符串 left(str, length) 说明:left(被截取字段,截取长度) 例:select left(content,200) as abstract from my_con ...

  9. 【局域网聊天客户端篇】基于socket与Qt

    前言 暑假把linux下的高级编程和网络编程学习了一遍,学习很重要,但是也得有个练手的地方,所以必须做做项目来认识下自己所学习的知识. 能够找到小伙伴一起做项目也是一件很快乐的事情的,很幸运的有两个小 ...

  10. 分享一个随机更改 MAC地址 软件

    有些软件 是根据 MAC地址 来判断 是不是 已经 安装过 这个 软件 (针对 有些软件是 可以 免费 使用的 ) 要想 一直 使用 的话 只需要 修改一下 mac地址 就可以 继续 使用! 在百度中 ...