蹒跚学步——C#之面向对象
接触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#之面向对象相关推荐
- 尘缘浅悟之蹒跚学步:linux命令整理
前言 多记.多练.多理解 目录 一.切换命令 二.查看命令 三.开启命令 四.关闭命令 五.修改命令 六.增加命令 七.删除命令 八.帮助命令 九.vi常用命令 十.查找命令 十一.拷贝命令 十二.移 ...
- 蹒跚学步之IDEA建立个基本的Springboot项目
蹒跚学步之IDEA建立个基本的Springboot项目 前言 记录下详细步骤 前言 俗话说:好记心不如烂笔头.作为初出茅庐的小程序员,这句话就可以是 好记心不如写博客!~从此开始记录自己编程之路成长的 ...
- Python蹒跚学步1:常用函数 和 注意事项
Python蹒跚学步1:常用函数 和 注意事项 常用函数: 获取Python当前的工作目录 >>> import os >>> os.getcwd() 'D:\\W ...
- 蹒跚学步,走出Scala的下一步
蹒跚学步,走出Scala的下一步 在走到下一步之前呢,我们现在做下总结,然后跑个小DEMO 上一章节我们了解了Scala语言的变量是如何定义的-Scala的变量分两种类型(val.var) 然后我们又 ...
- 回顾蹒跚学步的我(上)
08年高中毕业. 作为一名没见过世面的19岁高中毕业生来说,在填自愿那时,就稀里糊涂地填了软件工程.所以,就决定了我现在的职业,怎么说,不坏,也不是自己特别喜欢. 到了大学,一切都放松了.所以,大一, ...
- 2020区块链50指数样本股大盘点:有人蹒跚学步,有人激流勇进
作者:Ivans 出品:陀螺财经 编者按:应用落地者众,业务创收者少,技术与产业融合成为共识. 2019年10月,中央政治局第十八次集体学习了区块链,区块链被确定为核心技术自主创新的突破口,重要地 ...
- android蹒跚学步
1.androidmanifest.xml文件中如何添加注释 xml文件中需要这样:<!-- 要注释的代码内容 -->
- 游戏智能合约蹒跚学步,链安安全审计保驾护航
引子:"夫未战而庙算胜者,得算多也;未战而庙算不胜者,得算少也.多算胜少算,而况于无算乎?" --<孙子兵法> 1.相关消息动态 7月24日早些时候有EOS游戏的智能合 ...
- 蹒跚学步Linux(1)之Vmwave安装Ubuntu
别说,对我这么一个初学者,单单一个安装过程就花了我好几个小时的时间,希望能够一步一步走好吧,希望能早日精通Linux的各种安装,java.python.C#.Js.C的Hello word写法和各种数 ...
最新文章
- mysql 分钟_mysql分钟到小时和分钟
- Oracle顶级认证OCM考试实战总结
- python网络编程项目_python网络编程详解
- 感知机算法python实现
- Linux:rm命令的用法
- Python数据分析四剑客:IPython、Numpy、pandas、Matplotlib
- VS2017插件工具-VisualSVN(6.3.0)-破解之法
- 大一计算机引论知识点,计算机引论知识点2015.doc
- ubuntu20.04 3060 显卡 安装NVIDIA显卡驱动
- PAT 乙级 1001 害死人不偿命的(3n+1)猜想 (15 分) C++
- Android intent category大全
- 无法查找网络工作组计算机,无法查看工作组计算机怎么解决
- 2022计算机二级全套资料:视频+练习软件+真题资料
- 51单片机数码管密码锁
- 本题要求编写程序,计算序列 1 + 1/2 + 1/3 + ... 的前N项之和。
- Java+Selenium3方法篇43-利用Jexcel操作2003版本excel
- 考研计算机专业课408,【21计算机考研】专业课统考408院校汇总
- 计算机论文的致谢部分写什么,计算机论文致谢怎么写(格式+范例)
- Python2.7+PyQt5的安装
- 3dmax入门 | 学3d建模必备软件技能基础教学