接触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. mysql 分钟_mysql分钟到小时和分钟
  2. Oracle顶级认证OCM考试实战总结
  3. python网络编程项目_python网络编程详解
  4. 感知机算法python实现
  5. Linux:rm命令的用法
  6. Python数据分析四剑客:IPython、Numpy、pandas、Matplotlib
  7. VS2017插件工具-VisualSVN(6.3.0)-破解之法
  8. 大一计算机引论知识点,计算机引论知识点2015.doc
  9. ubuntu20.04 3060 显卡 安装NVIDIA显卡驱动
  10. PAT 乙级 1001 害死人不偿命的(3n+1)猜想 (15 分) C++
  11. Android intent category大全
  12. 无法查找网络工作组计算机,无法查看工作组计算机怎么解决
  13. 2022计算机二级全套资料:视频+练习软件+真题资料
  14. 51单片机数码管密码锁
  15. 本题要求编写程序,计算序列 1 + 1/2 + 1/3 + ... 的前N项之和。
  16. Java+Selenium3方法篇43-利用Jexcel操作2003版本excel
  17. 考研计算机专业课408,【21计算机考研】专业课统考408院校汇总
  18. 计算机论文的致谢部分写什么,计算机论文致谢怎么写(格式+范例)
  19. Python2.7+PyQt5的安装
  20. 3dmax入门 | 学3d建模必备软件技能基础教学

热门文章

  1. (第5讲)同一用户的不同页面共享数据的四种方法
  2. 如何处理高并发业务场景
  3. 公租房视频监控解决方案 为租房管理提供综合性安防服务
  4. shejimoshi设计模式
  5. web开发入门(转载)
  6. 大数据物流项目:业务服务器和大数据服务器(四)
  7. 推荐几部好看的漫画,顺便安利一个免费漫画app
  8. JavaScript 时间处理 加一天 减一天
  9. Python3 基础语法
  10. 利用VS2015与FFmpeg实现视频解编码的基本过程