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

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

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

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

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

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

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

  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. IOS开发创建开发证书及发布App应用(九)——等待审核(审核几种状态)

    以下是App应用的几种状态,如果看不到英文,建议复制到网站翻译一下就行,意思差不多能明白的 以上整套流程是在2013年写的,可能有些地方已经不太一样了,只是给大家做一下参考,毕竟再怎么改大概流程还是差 ...

  2. 老李分享:loadrunner 的86401错误

    老李分享:loadrunner 的86401错误   系统和软件配置: os:windows 2003loadruner版本:LoadRunner11loadrunner:协议:SMTP协议并发数:2 ...

  3. sublime Text3插件无法安装解决方法(提示There are no packages available installation)

    第一步 在sublime Text3界面按"ctrl+."出现一个输入框界面 第二步 在输入框输入: import urllib.request,os,hashlib; h = ' ...

  4. React组件实现越级传递属性

    如果有这样一个结构:三级嵌套,分别是:一级父组件.二级子组件.三级孙子组件,且前者包含后者,结构如图: 如果把一个属性,比如color,从一级传递给三级,一般做法是使用props逐一向下传递,代码如下 ...

  5. [转载]前端构建工具gulpjs的使用介绍及技巧

    转载地址:http://www.cnblogs.com/2050/p/4198792.html gulpjs是一个前端构建工具,与gruntjs相比,gulpjs无需写一大堆繁杂的配置参数,API也非 ...

  6. Java多线程学习笔记(一)——Thread类中方法介绍

    currentThread():返回代码正在被哪个线程调用. public class CurrentThreadWay { public static void main(String[] args ...

  7. 优雅地解决Ajax接口参数来自另一个接口的问题

    最近闲赋在家,终于有时间回顾我在工作中遇到的一些东西,由于经验不足,有些方面做的不是很好.在上家公司曾经遇到一个小问题,就是Ajax的接口中有参数是从另一个接口后台传来的.当时我的做法是将需要参数的接 ...

  8. 关于 __proto__和prototype的一些理解

    var Person = function(name) {}; Person.prototype.say = function() { console.log("Person say&quo ...

  9. java中创建对象中使用默认构造函数的注意点

    public class Test3 {   private int n;   Test3() {      System.out.println("调用默认构造器");   }  ...

  10. 计算单词出现的次数--linq

    1.直接给出代码:声明数据,也可以是txt等文件,通过File类的静态方法读取其中的文本,再转换成List<string>数组. private static List<string ...