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

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

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

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

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

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

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

  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. jquery、js获取页面高度宽度等

    jquery获取页面高度宽度 //获取浏览器显示区域(可视区域)的高度 : $(window).height(); //获取浏览器显示区域(可视区域)的宽度 : $(window).width(); ...

  2. 自动生成并导出word文档

    今天很荣幸又破解一现实难题:自动生成并导出word文档 先看页面效果: word效果: 代码: 先搭建struts2项目 创建action,并在struts.xml完成注册 <?xml vers ...

  3. 老李分享:大数据框架Hadoop和Spark的异同 2

    Spark数据处理速度秒杀MapReduce Spark因为其处理数据的方式不一样,会比MapReduce快上很多.MapReduce是分步对数据进行处理的: ”从集群中读取数据,进行一次处理,将结果 ...

  4. 老李分享:jvm结构简介 1

    老李分享:jvm结构简介     poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨询qq:9088214 ...

  5. 打造比Dictionary还要快2倍以上的字查找类

    针对一个长度为n的数组. [1,2,3,4,5,6,7,8,9] 最快的通用查找类是Dictionary其采用hashcode算法,复杂度为O(1). 而上大学时,最快的查找法为二分查找法,复杂度为O ...

  6. CSS布局之-水平垂直居中

    对一个元素水平垂直居中,在我们的工作中是会经常遇到的,也是CSS布局中很重要的一部分,本文就来讲讲CSS水平垂直居中的一些方法.另外,文中的css都是用less书写的,如果看不懂less,可以把我给的 ...

  7. 【PAT_Basic日记】1002. 写出这个数

    #include <stdio.h> #include <stdlib.h> #include <string.h> int main() { void print ...

  8. canvas与svg区别

    canvas与svg区别 和SVG比起来有两个弱点,一个是画布里的内容是独立的,不能当成html元素:二是CANVAS是属于位图格式,而SVG是矢量图,可以平滑放大. HTML5的canvas画出来的 ...

  9. angular directive

    1.restrict (字符串)可选参数,指明指令在DOM里面以什么形式被声明: 取值有:E(元素),A(属性),C(类),M(注释),其中默认值为A: E(元素):<directiveName ...

  10. php写流程管理

    流程控制即某个人发起一个流程,通过一层一层审核,通过后,完成整个流程,若有一层审核未通过,中断整个流程.即结束! 比如请假流程: 某一员工发起一个请假流程,那么这个流程的节点人员即他的上级,上上级,上 ...