接触C#已经有一段时间了,因为前边Vb基础没打好,对于编制知识网也只是停留在一个表层上。这里就先对C#核心——面向对象的三大基本特征宏观简单的小结一下。

封装

每个对象都包含它能进行操作所需要的所有信息,这个特性称为封装。他不用以来与其他对象来完成自己的操作。

其实封装就是将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成“类”,其中数据和函数都是类的成员。

封装就是将与这个对象相关的属性,方法,都装在这个对象的箱子中,此时这个箱子中的东西是外界不能看到的,但是他拥有一个清晰的对外接口,以供别人的调用。

 public class Customer  //类名字{protected  string name;protected  decimal balance;  //精确到一毛钱  balance 是电话费public string CustomerName  //定义属性,对类的成员进行读和写{get { return name; }set { name = value; }}
public void RecordfPayment(decimal amountpaid) //amount paid  支出金额  支付账单(recordpayment){balance -= amountpaid;   //进行电话计费  如果为零相当于不欠钱}

以上例子是对顾客这个类进行封装,有对外公开的方法,也有自己的隐私所要保护的重要的信息。

封装的优点:

良好的封装能够减少耦合。

类内部的实现可以自由地修改

类具有清晰的对外接口

安全性很高

继承

源于抽象类的思想

抽象类包含了事物的共有属性和方法 ,为继承提供了一个出发点.

抽象类的作用就是让子类继承,去重新编写抽象类中的抽象方法(也为重写或覆写)

子类不但具有父类的特性,还可以定义新的特性。

 public class Nevermore60Customer:Customer   //继承基类{private   uint highCostMinutesUsed;public override void RecordCall(TypeOfCall callType, uint nMinutes)  //virtual:废墟函数不可改变基类,所以如果要改变基类,同时要有自己的一些特色使用virtual,让此类成为墟,然后调用要使用override{switch (callType ){case TypeOfCall.callToLandline: balance += (0.02M*nMinutes );break ;case  TypeOfCall.callToMobile :uint HighCostMinutes , LowCostMinutes; //定义一个最高分钟 高出的要以相应的每分钟多少钱来算,低分钟要按照每分钟多少钱来算uint HighCostMinutesTOGO=(highCostMinutesUsed < 60)? 60-highCostMinutesUsed  :0;  //计算还有多长时间属于高费用的时间 如果所打电话打的分钟大于60,那么直接高计费的为0if (nMinutes >HighCostMinutesTOGO ){HighCostMinutes =HighCostMinutesTOGO ;LowCostMinutes =nMinutes -HighCostMinutes ;}else {HighCostMinutes =nMinutes; LowCostMinutes =0;}highCostMinutesUsed +=HighCostMinutes ;balance +=(0.05M*HighCostMinutes +0.02M*LowCostMinutes );break ;default :break;}}

按照上述封装例子,写一个子类。有Customer这一父类,当然打电话超过60分钟的Customer也是其中一种,所以两者为继承关系。我们可以看出来,在子类中的

RecordCall这个方法,是对父类中的RecordCall这个方法的重写,这样做的原因就是因为父类的此方法属于大众化的(大众情人),但是子类也有此方法,但是他比较个性一点,有自己喜欢的人,所以这个方法就要重写一下。

说到重写,不得不说一下重写的特点

只有虚方法或抽象方法才能实现(virtual关键字)

只有通过使用override关键字来实现

要求(三相同)

相同的方法名

相同的参数列

相同的返回值类型

以上的要求是必须满足的,缺一不可,如果不满足,使用的时候就会出错.

继承的优点是:

继承使得子类公共的部分都放在了父类中,使得代码的到共享,避免重复

使得修改或者扩展子类功能都比较容易

多态

多态则是表示的是不同的对象可以执行相同的动作,但是要通过他们自己的实现代码来执行。同时为了使子类的实例完全接替来自父类的类成员,父类必须将该成员声明为虚拟的,关键字(virtual)。

子类可通过关键字(Override),将父类实现替换为他自己的实现。这就是方法的重写。

由于上次已经将多态总结了一下,详细的情况就不多讲了,详情请见:C#之多态性

多态概括一下,也就是:

第一子类以父类的身份出现;

第二子类在工作时以自己的方式来实现;

第三子类以父类的身份出现时候,子类特有的属性方法不可以使用。

学习面向对象,其三大特征是必须要能够聊列熟知,理论联系实践,实践多了,理解的也会更加深刻。

--------------------不谋全局者不足以谋一域,不谋万世者不足以谋一时------------------

蹒跚学步——C#之面向对象相关推荐

  1. 尘缘浅悟之蹒跚学步:linux命令整理

    前言 多记.多练.多理解 目录 一.切换命令 二.查看命令 三.开启命令 四.关闭命令 五.修改命令 六.增加命令 七.删除命令 八.帮助命令 九.vi常用命令 十.查找命令 十一.拷贝命令 十二.移 ...

  2. 蹒跚学步之IDEA建立个基本的Springboot项目

    蹒跚学步之IDEA建立个基本的Springboot项目 前言 记录下详细步骤 前言 俗话说:好记心不如烂笔头.作为初出茅庐的小程序员,这句话就可以是 好记心不如写博客!~从此开始记录自己编程之路成长的 ...

  3. Python蹒跚学步1:常用函数 和 注意事项

    Python蹒跚学步1:常用函数 和 注意事项 常用函数: 获取Python当前的工作目录 >>> import os >>> os.getcwd() 'D:\\W ...

  4. 蹒跚学步,走出Scala的下一步

    蹒跚学步,走出Scala的下一步 在走到下一步之前呢,我们现在做下总结,然后跑个小DEMO 上一章节我们了解了Scala语言的变量是如何定义的-Scala的变量分两种类型(val.var) 然后我们又 ...

  5. 回顾蹒跚学步的我(上)

    08年高中毕业. 作为一名没见过世面的19岁高中毕业生来说,在填自愿那时,就稀里糊涂地填了软件工程.所以,就决定了我现在的职业,怎么说,不坏,也不是自己特别喜欢. 到了大学,一切都放松了.所以,大一, ...

  6. 2020区块链50指数样本股大盘点:有人蹒跚学步,有人激流勇进

    作者:Ivans 出品:陀螺财经 编者按:应用落地者众,业务创收者少,技术与产业融合成为共识.   2019年10月,中央政治局第十八次集体学习了区块链,区块链被确定为核心技术自主创新的突破口,重要地 ...

  7. android蹒跚学步

    1.androidmanifest.xml文件中如何添加注释 xml文件中需要这样:<!--  要注释的代码内容  -->

  8. 游戏智能合约蹒跚学步,链安安全审计保驾护航

    引子:"夫未战而庙算胜者,得算多也;未战而庙算不胜者,得算少也.多算胜少算,而况于无算乎?" --<孙子兵法> 1.相关消息动态 7月24日早些时候有EOS游戏的智能合 ...

  9. 蹒跚学步Linux(1)之Vmwave安装Ubuntu

    别说,对我这么一个初学者,单单一个安装过程就花了我好几个小时的时间,希望能够一步一步走好吧,希望能早日精通Linux的各种安装,java.python.C#.Js.C的Hello word写法和各种数 ...

最新文章

  1. 谷歌无人车十年记:理想背后的骨感现实 | 厚势汽车
  2. C/C++ linux 分享库源码网站收藏
  3. 爱是谋杀:读徐小斌的《别人》
  4. 紫金计算机网络,南京理工大学紫金学院《计算机网络技术》考试复习试题试题[含答案解析]...
  5. gridview 导成Excel
  6. 电脑文件夹加密软件_上海靠谱电脑资料加密软件解决方案
  7. python制作 whl 源文件,并制作本地pip源
  8. 如何在Mac上的一个“预览”窗口中显示若干文件
  9. 在信号处理函数中调用longjmp
  10. 电气工程和自动化哪个专业就业前景好?
  11. EAUML日拱一卒-活动图::14.2 Behavior StateMachines (6) - Transitions
  12. 网上邻居看不到共享的计算机,网上邻居看不到其它共享电脑怎么办?
  13. 语音控制c语言程序,基于52单片机的智能家居语音控制系统电路设计(含源程序+原理图)...
  14. KNN算法以及R语言的实现
  15. JackHttp -- 浅谈编码、加密(对称加密,非对称加密,Hash算法)
  16. 网络交换机有哪些常见的故障?
  17. MOSAIC扩充VOC数据集
  18. 因无聊用python写了个爬取蓝奏云直链的爬虫(含注释并包装为函数)
  19. bzoj1123 [POI2008]BLO 圆方树
  20. 南京理工大学电子与通信工程考研上岸经验分享

热门文章

  1. Google Kubernetes Engine(GKE) 使用初探
  2. 基于python网络爬虫的设计和思考
  3. HTML5外包团队—Sencha Touch 2.3 正式版下载
  4. vs2010c语言小游戏,用C语言写一个三子棋小游戏(用VS2010实现,加强版)
  5. [转载]ERP项目验收六大标准
  6. iOS-iOS 11图片保存相册权限 NSPhotoLibraryAddUsageDescription
  7. 计算机耗材和计算机配件的区别,原材料和耗材有啥区别
  8. 自从用上命令行备忘神器 Navi 后,妈妈再也不用担心我记不住复杂的命令行语句了!...
  9. 2台window电脑如何传输文件
  10. poi读取Excel日期为数字的解决方法